Eclipse:导出到 .jar 并包含资源文件 (ANT)

标签 eclipse ant executable-jar java-6

我们在 eclipse 中的项目大约显示以下文件夹:

application
    - src
    - JRE System Library [1.6]
    - Referenced Libraries
    - lib
    - rsc

在我们的项目中,我们想使用"file">“导出...”>“可执行 JAR”

效果很好,但有一些异常(exception):如果我们想运行 application.jar,我们仍然需要将文件夹 rsc/复制到与 application.jar 相同的位置。

在 rsc/中,我们还有其他文件夹用于分隔不同的部分。 基本上,我们使用代码加载片段(稍微改变一下,但路径样式是正确的)

strUrl = "file:rsc/properties/Constants.properties";
url = new URL(strUrl);
ImageIcon icon = new ImageIcon(url);

我可以右键单击 rsc/> 构建路径 > 用作源文件夹。

但这也不起作用,因为 eclipse 不会自动将 rsc 文件夹复制到 bin/- 文件夹中。然后我们就无法再从终端运行它(未打包到 jar 中)

编辑:为什么 Eclipse 无法正确处理这个问题?为什么“嵌套”输出文件夹存在问题?在“构建路径”对话框的“源”选项卡中,我可以轻松添加 rsc/-文件夹,并将输出文件夹设置为 bin/rsc/,但它似乎无法放置嵌套文件夹...

<小时/>

编辑2:现在我已经能够创建一个 xml 文件来使用 ant 构建这些内容,并且以某种方式设法将 rsc 文件夹直接包含到 jar 中。由于同样的错误仍然无法运行。我真的需要检查资源路径是否在 JAR 中吗? JAR 的内容现在如下:

META-INF/
META-INF/MANIFEST.MF
configurator/
controller/
editor/
gui/
logic/
networking/
rsc/
rsc/gamesettings/
rsc/levels/
rsc/pics/
rsc/properties/
util/

但 Java 仍然讨厌我,并抛出 java.io.FileNotFoundException: rsc/properties/Constants.properties ,堆栈跟踪大约有 100 行。

<小时/>

有人知道怎么做吗?谢谢并问候

最佳答案

如果将 rsc 标记为源文件夹,Eclipse 会将其内容复制到输出目录。或者,如果您想对输出中的资源进行分组,您可以将 rsc 移动到 src 下。

然后您可以使用Class.getResource("/properties/Constants.properties")Class.getResource("/rsc/properties/Constants.properties")无论您的应用程序是打包为 jar 还是从源代码运行,它都会工作。

作为旁注,file: 协议(protocol)仅适用于普通文件,要访问 jar 内的文件,您必须使用类似 new URL("jar:file:app .jar!/rsc/properties/Constants.properties")

关于Eclipse:导出到 .jar 并包含资源文件 (ANT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2073250/

相关文章:

c - Eclipse 交叉编译...我该怎么做?

java - Ant 不会导入属性

java - 没有主要 list 属性(但我在 jar 中有 list 文件)

java - 从 .bat 文件运行 jar 文件时调整控制台大小

java - 调用可执行 jar 文件中类的方法?

eclipse - Eclipse RCP 应用程序中的内存泄漏

ant - 如何有条件地在雪豹上建立 Ant 目标

java - 无法使用 maven-assembly-plugin 设置类路径

java - 部署程序集 : The currently displayed page contains invalid values

ant - 如何在文件中存储 Apache Ant 属性值