我们的在eclipse项目大致示出了下列文件夹:

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

在我们的项目,我们想用文件>导出...>可执行的JAR

好工作正常,有一些例外:如果我们想运行我们的application.jar,我们仍然需要复制该文件夹RSC /在同一位置application.jar

在RSC /,我们有不同部分的分离的其他文件夹。 基本上,我们使用加载的代码片段(以及一个位改变,但是路径的风格是正确的)

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

我可以右击在RSC />构建路径>用作源文件夹。

但是,这并不工作,要么因为蚀不会自动将RSC文件夹复制到的bin / -folder。然后我们不能再从终端(未打包成罐)运行它

修改:为什么蚀不能正确地处理这种?为什么它有“嵌套”输出文件夹的问题?在构建路径对话框的源选项卡,我可以很容易地设置为斌输出文件夹添加RSC / -folder / RSC /,但它似乎并没有能够把嵌套的文件夹...


编辑2 :现在我已经能够创建一个XML文件,蚂蚁构建的东西,并以某种方式设法包括RSC-文件夹右键放入瓦罐。仍然没有因同样的错误运行。我真的需要检查资源的路径,无论他们是在一个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行堆栈跟踪。


任何人的想法怎么办呢? THX和问候

有帮助吗?

解决方案

如果您标记rsc作为源文件夹Eclipse将其内容复制到输出目录。或者,如果你愿意,你可以只移动rscsrc到组的资源输出。

然后你可以使用Class.getResource("/properties/Constants.properties")Class.getResource("/rsc/properties/Constants.properties"),如果您的应用程序被打包为从源头上一个罐子或运行,则无论工作。

作为一个旁注中,file:协议只适用于普通文件,访问罐内的文件,你不得不使用像new URL("jar:file:app.jar!/rsc/properties/Constants.properties")

其他提示

您可以尝试:在Java构建路径对话框,转到Libraries选项卡,选择“添加类文件夹...”。选择从类文件夹选择对话框rsc。所述rsc目录的内容现在将包含在可执行的JAR文件。

(请注意,RSC本身不会被收录,所以你可能需要添加一个新的子目录下,RSC尽在罐子正确的目录结构。)

有关这种使用的,我会使用推荐的Maven ,该自动执行创建罐时。甚至还有 Eclipse插件

您也可以使用蚂蚁

我手动执行此操作通常情况下,你的情况 罐子-uf foo.jar中RSC 包括所有的资源。 您可以编写脚本或做在蚂蚁

正如你在说修改2 您已经全部在一个罐子,这应该工作:

String path = "rsc/img/img.gif";
URL url = this.getClass().getResource(path);
ImageIcon icon = new ImageIcon(url);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top