【发布时间】:2012-07-14 19:30:12
【问题描述】:
首先,我已经阅读了很多 S.O.关于这个主题的问题,我已经尝试了其中建议的内容。
这是我的情况。我正在使用 Processing 框架编写一个 Java 应用程序,我正处于需要开始考虑打包应用程序的最后阶段。可以从命令行执行的 jar 文件是我尝试使用 Eclipse 中的导出功能构建的。
我的项目结构如下:
src/
multiple packages/
libs/
jar files and natives
data/
fonts and images
config/
json files
当我导出 jar 文件并解压缩 jar 以检查其内容时,我发现这些目录的内容已转储到 .jar 的顶层。
看起来像这样:
.jar
packages
jar files
fonts
json files
所以,当我尝试使用以下内容加载配置文件时:
BufferedReader reader = new BufferedReader( new FileReader( path ) );
当我在 Eclipse 中运行应用程序时,一切都只是文件。但是 jar 文件会抛出一个FileNotFoundException。
我在 S.O. 上看到的许多问题。对于此类问题,建议使用class.getClass().getResource() 或class.getResourceAsStream()。我已经使用相对路径和文件名尝试了这两种方法:
class.getResource( 'config.json' );
class.getResources( 'cfg/config.json' );
class.getResourceAsStream( '../../config.json' );
当从 Eclipse 或 jar 使用以下方法运行时,所有这些方法都返回 null:
java -jar myjarfile.jar
我也愿意使用 Ant 文件。事实上,我现在正在使用导出功能生成的 Ant 文件来构建 jar。如果我可以添加一些东西来将目录添加到 jar 中,那也很棒。
【问题讨论】:
标签: java eclipse jar processing embedded-resource