gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:46:36 24 4
gpt4 key购买 nike

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

我遇到的问题是 other.jar 中有一个类查找该项目中包含的图像文件 (xyz.gif):例如,项目“其他”看起来像: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/添加到 other.jar 的 MANIFEST.MF2.我尝试将 images 目录复制到 code.jar 的构建中,并将 CLASS-PATH: images/添加到 code.jar 的 MANIFEST.MF3.我尝试将 CLASS-PATH: images/xyz.gif - 放在两个 list 文件中

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

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

java -cp somepath/images com.xyz.code

我想做的是运行:

java -jar code.jar - and have it locate the images/ directory on the classpath.

我应该补充一点,包含图像的 jar (other.jar) 项目不是我的代码 - 我只是想编译它以供使用。该代码尝试使用以下方式加载图像:javax.imageio.ImageIO.read(ClassLoader.getSystemResource("xyz.gif");似乎有很多关于这是否是加载图像的正确/最佳方式的讨论 - 我假设此代码的作者确实使用 Eclipse 来工作(其中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

关于java - 如何将资源目录的路径添加到可执行jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15725806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com