【问题标题】:Picture inside .jar file wont work when I export it.jar 文件中的图片在我导出时不起作用
【发布时间】:2014-04-23 12:23:48
【问题描述】:

.jar 文件中的图片在导出时不起作用。

我制作了一个显示图片的Java程序,在Eclipse中完美运行,但是当我将它导出为.jar文件时,它不会显示图片。我刚开始学习Java,而且我没有创建 Jar 文件和使用 jar 文件中的文件的经验。

这是我的代码:

import javax.swing.*;
class displayPicture{
public static void main(String args[]){


    JFrame frame = new JFrame();
    ImageIcon icon = new ImageIcon("src/img.gif");
    JLabel label = new JLabel(icon);

    //Create the frame
    frame.add(label);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}
}

当我在 Eclipse 中运行它时它会显示图片,但是当我将它导出到 .jar 文件时,它只显示一个空白窗口。

【问题讨论】:

标签: java eclipse image swing jar


【解决方案1】:

两件事...

第一

构建代码后,路径src 不太可能存在

第二

ImageIcon(String) 假定 String 引用是对文件系统上文件的引用。存储在应用程序上下文中的资源不是文件,它们的处理方式不同。它们通常被称为嵌入式资源。

请尝试使用ImageIcon icon = new ImageIcon(displayPicture.class.getResource("img.gif"));ImageIcon icon = new ImageIcon(displayPicture.class.getResource("/img.gif"));

我更喜欢使用ImageIO.read,因为它会在出现问题时抛出IOException,并且支持更多文件格式。

更多详情请见Reading/Loading an Image

您还应该花时间阅读Code Conventions for the Java Programming LanguageInitial Threads

【讨论】:

  • 它给了我和错误:displayPicture 无法解析为一种类型。我在这里错过了什么吗?
  • 例子是基于你的例子displayPicture是你的类名。因为您不能在static 上下文中使用getClass(),所以我不得不改用类的名称。根据您提供的示例,答案中的解决方案是正确的。您正在使用它的上下文超出了我所拥有的可用信息的范围......
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2013-06-18
  • 2014-08-05
相关资源
最近更新 更多