Java 如何将资源目录的路径添加到可执行jar

Java 如何将资源目录的路径添加到可执行jar,java,jar,classpath,Java,Jar,Classpath,我试图创建一个可执行的jar code.jar,它依赖于我在单独的project=目录中创建的另一个jar文件other.jar 我遇到的问题是,other.jar中有一个类查找该项目中包含的图像文件xyz.gif: e、 例如,项目“other”看起来像:build/images/xyz.gif src/。。。等等 我创建other.jar,包括/images目录,然后创建code.jar 然而,当我跑的时候 java-jar code.jar-找不到xyz.gif: java.lang.Il

我试图创建一个可执行的jar code.jar,它依赖于我在单独的project=目录中创建的另一个jar文件other.jar

我遇到的问题是,other.jar中有一个类查找该项目中包含的图像文件xyz.gif: e、 例如,项目“other”看起来像:build/images/xyz.gif src/。。。等等

我创建other.jar,包括/images目录,然后创建code.jar

然而,当我跑的时候 java-jar code.jar-找不到xyz.gif: java.lang.IllegalArgumentException:input==null! 在javax.imageio.imageio.readImageIO.java

我已经尝试了所有我能想到的方法来将images/xyz.gif的路径传递到jar,包括: 1.我尝试将类PATH:images/添加到MANIFEST.MF for other.jar 2.我尝试将images目录复制到build for code.jar中,并将CLASS-PATH:images/添加到MANIFEST.MF for code.jar中 3.我尝试将类路径:images/xyz.gif-放在两个清单文件中

这似乎是一个普遍的问题:如何将非类资源(例如,图像文件)包含到java jar文件中 这样java就可以定位它,而无需使用子包的后续包—例如,code.jar使用other.jar 需要知道细节

假设我可以使用以下方法成功运行代码项目:

java-cp somepath/images com.xyz.code

我想做的是运行:

java-jar-code.jar-并让它在类路径上定位映像/目录

我应该补充一点,包含jar other.jar项目的图像不是我的代码——我只是试图编译它以供使用。该代码尝试使用以下方式加载图像: javax.imageio.imageio.readClassLoader.getSystemResourcexyz.gif; 关于这是否是加载图像的正确/最佳方式,似乎有很多讨论——我假设这段代码的作者确实使用了Eclipse whi ch很可能整理了路径,我只是想让它在命令行上工作,最终在ant中工作


任何帮助都将不胜感激。我不明白为什么关于jar创建的文档这么少。

不要直接运行jar,试着把它放在类路径中。大概是这样的:

java-cp code.jar MainClass

这可能有用

编辑:

上述解决方案将不起作用。请尝试以下代码以获取图像

ImageIcon myIcon = new ImageIcon( this.getClass().getResource("/resources/icon.gif"));
并将图像放置在以下位置:

/myApp/src/resources/icon.gif
/myApp/bin/resources/icon.gif

你还想要答案吗?