繁体   English   中英

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

[英]How to add path to resource directory to an executable jar

我正在尝试创建一个依赖于我在单独的项目(=目录)中创建的另一个jar文件(other.jar)的可执行jar(code.jar)。

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

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

但是,当我运行java -jar code.jar时,无法找到xyz.gif:java.lang.IllegalArgumentException:输入== null! 在javax.imageio.ImageIO.read(ImageIO.java ...)

我已经尝试了所有可以想到的将images / xyz.gif的路径传达到jar的方法,包括:1.我尝试将CLASS-PATH:images /添加到MANIFEST.MF中,以用于other.jar 2.我尝试复制将images目录放入code.jar的构建中,并将CLASS-PATH:images /添加到code.jar的MANIFEST.MF中。3.我尝试将CLASS-PATH:images / xyz.gif-放在两个清单文件中

这似乎是一个普遍的问题:如何以Java可以找到它的方式将(非类)资源(例如,图像文件)包含到Java jar文件中(不使用子包的后续包,例如,code.jar使用other.jar)需要了解详细信息。

说我可以使用以下命令成功运行代码项目:

java -cp somepath / images com.xyz.code

我想做的是运行:

java -jar code.jar-并在类路径中找到images /目录。

我应该补充一点,包含图像的jar(other.jar)项目不是我的代码-我只是尝试对其进行编译以使用。 该代码尝试使用以下方法加载图像:javax.imageio.ImageIO.read(ClassLoader.getSystemResource(“ xyz.gif”);似乎有很多关于这是否是加载图像的正确/最佳方法的讨论-我假设此代码DID的作者可以使用Eclipse进行工作(可能会整理出路径),而我只是想使其在命令行上工作(并最终在ant中)。

任何帮助将不胜感激。 我不明白为什么jar创建文档如此之少。

而不是直接运行jar,请尝试将其放在classpath中。 像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM