月蚀:出口.jar和包括资源文件(ANT)
-
20-09-2019 - |
题
我们的在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将其内容复制到输出目录。或者,如果你愿意,你可以只移动rsc
下src
到组的资源输出。
然后你可以使用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尽在罐子正确的目录结构。)
我手动执行此操作通常情况下,你的情况 罐子-uf foo.jar中RSC 包括所有的资源。 您可以编写脚本或做在蚂蚁
正如你在说修改2 您已经全部在一个罐子,这应该工作:
String path = "rsc/img/img.gif";
URL url = this.getClass().getResource(path);
ImageIcon icon = new ImageIcon(url);