0

我正在制作一个 Java 项目,现在它已经完成,我想制作一个 .jar 版本。但是当我运行 .jar 版本时,图像不包括在内。我在 Mac 上使用 Netbeans。

我尝试制作此代码:

private static String chemin = System.getProperty("user.dir");
private String fond_path = chemin+"/src/hepta/Images/FondParametres.png";

fondPanels = new ImageIcon(fond_path);

但它看起来在 .jar 版本中不起作用,即使图像与以前相比位于同一个位置!

我的问题是,为什么因为路径可用而有所不同?

(我确切地说我做了一些研究,找到一些这样的代码:

URL imageurl = getClass().getResource("/images/images2.gif"); 
Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl);
JLabel piclabel = new JLabel(new ImageIcon( myPicture ));

但我真的不明白其中的区别)

谢谢 !

4

1 回答 1

3

不同的是,第一个是文件引用。路径指向文件系统中的一个文件。

第二个是资源引用,它指向 zip 文件中的一个条目,Java 知道如何读取该条目。

当您查看包含该.jar文件的文件夹时,您不会没有目录src/hepta/Images。这意味着如果您尝试使用文件引用,Java 将无法找到有问题的文件。

相反,您需要告诉 Java 查找资源,基于它的类路径/搜索路径,它指向已嵌入.jar文件中的资源 - 这只是一个带有一些额外内容的 zip 文件......

于 2013-05-26T22:03:06.853 回答