当前位置: 首页 > 知识库问答 >
问题:

JavaSwing:包含图像时,可运行JAR文件不工作

惠洛华
2023-03-14

下面的代码在Eclipse中运行良好(两种图像处理方法都可以)。但是当导出为可运行的JAR文件时,双击。JAR,什么都没发生。如果我注释掉代码的图像部分,则。JAR在导出和框架构建时运行良好。因此,图像的获取似乎导致了错误。JAR可能会失败。

我有草莓。jpg文件位于“C:\Users\sean\workspace\myApps\bin\testing”中,您能否告知问题是否与我的代码有关?

(此处首先修改的代码:Java Swing:无法使用getResource加载图像)

package testing;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;



public class IconTest {


public static void main(String[] arguments) throws IOException {

    JFrame frame1 = new JFrame();
    frame1.setTitle("Frame1");
    frame1.setSize(500, 500);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    FlowLayout flo = new FlowLayout();
    frame1.setLayout(flo);

    //POSSIBILITY 1 TO HANDLE IMAGE
      InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");
    Image image = ImageIO.read(resourceAsStream);
    JLabel label1 = new JLabel(new ImageIcon(image));

    //POSSIBILITY 2 TO HANDLE IMAGE
/*    java.net.URL url= IconTest.class.getResource("strawberry.jpg");
    BufferedImage watermarkImage = ImageIO.read(url);
    JLabel label1 = new JLabel(new ImageIcon(watermarkImage));*/


    frame1.add(label1);
    frame1.setVisible(true);
}

}

共有3个答案

长孙阳焱
2023-03-14

以下Maven标准目录布局可能会有所帮助:

温星华
2023-03-14

处理图像的可能性3:

您可以检查正在获取的资源是否存在。未找到It资源,则您可以创建JLabel,同时使用可选文本。。。

JLabel label1 ;
URL imageUrl = IconTest.class.getClassLoader().getResource("strawberry.jpg");
if ( imageUrl != null ) {
    label1 = new JLabel(new ImageIcon(imageUrl));
} else {
    label1 = new JLabel("Alternative text");
}
时宾实
2023-03-14

把图像放在你有源文件的地方,因为它指向源目录

InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");

然后生成可运行的jar文件,然后右键单击jar并以java平台二进制文件的形式运行

 类似资料:
  • 问题内容: 我想用Java构建可运行的jar。我需要在jar中包含一些文件,以便在执行jar时会自动从java类读取文件。因此,我在项目中创建了一个文件夹,并从项目中引用了这些文件。我按照一些教程创建了jar文件,但是无法在jar文件中包含这些外部文件。请让我考虑使用外部文件创建可运行的jar。 我的文件结构是 我访问 的abc.txt 在 test1.java 类。我的代码是 使用eclipse

  • 我想用Java构建一个可运行的jar。我需要在jar中包含一些文件,这样当我执行jar时,文件就会自动从java类中读取。因此,我在项目中创建了一个文件夹,并从项目中引用了这些文件。我按照一些教程创建了jar文件,但我不能在我的jar文件中包含这些外部文件。请允许我使用外部文件创建可运行的jar。 当我使用eclipse导出选项创建可执行jar时,我无法看到jar内部的FileFolder目录。请

  • 因此,在NetBeans IDE中,一切正常。全力工作。但是在Built&Clean之后,我看不到图像,但所有的操作都完成了。 你能建议出了什么问题吗?因为这个而生气

  • 本文向大家介绍Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包),包括了Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包)的使用技巧和注意事项,需要的朋友参考一下 Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包) 师兄部署了新的虚拟机,新学期大搞起来!之前由于爬虫代码不稳定,所以一直都是直接用Eclipse运行,然

  • 问题内容: 根据我的阅读,执行以下命令时: 然后,将忽略主类路径,并从清单文件中获取类路径。 此外,在命令行上声明的类路径也将被忽略。所以在: /usr/local/jar/foobar.jar被忽略。 最后,我读过清单文件在jar文件中只能包含相对路径。 因此,如何包含系统上存在的外部jar的绝对路径,而不是正在执行的jar文件中的绝对路径? 问题答案: 您是否有理由避免像这样调用主类 ? 这种

  • 我正在尝试将我的checkers程序从Eclipse导出到一个可运行的jar文件中。我得到一个jar文件,但它不运行。。。它给了我关于未找到的类的神秘错误消息。jar文件的意义不在于它包含了它所需要的所有类吗?我不知道现在该做什么。 这是我运行罐子时得到的: 知道是的一个内部类可能会有所帮助?有什么问题吗?我在导出向导中尝试了“提取所需库”和“打包所需库”。 我还尝试从命令行使用,但效果不太好。以