首先,我已经阅读了许多关于这个话题的S.O.问题,并尝试了其中建议的方法。
以下是我的情况。我正在使用Processing框架编写Java应用程序,现在进入最后阶段需要开始考虑如何打包该应用程序。我正试图使用Eclipse中的导出功能构建一个可从命令行执行的jar文件。
我的项目结构如下:
当我导出jar文件并解压缩以检查其内容时,我发现这些目录的内容已经被转储到.jar文件的顶层。
它看起来像这样:
当我在Eclipse中运行应用程序时,一切都正常。但jar文件会抛出FileNotFoundException异常。 我看到许多关于这些问题的问答,建议使用class.getClass().getResource()或class.getResourceAsStream()方法解决。我已经尝试使用相对路径和仅文件名来调用这两种方法:
所有这些方法,无论是在Eclipse还是使用jar运行时,都返回null:
以下是我的情况。我正在使用Processing框架编写Java应用程序,现在进入最后阶段需要开始考虑如何打包该应用程序。我正试图使用Eclipse中的导出功能构建一个可从命令行执行的jar文件。
我的项目结构如下:
src/
multiple packages/
libs/
jar files and natives
data/
fonts and images
config/
json files
当我导出jar文件并解压缩以检查其内容时,我发现这些目录的内容已经被转储到.jar文件的顶层。
它看起来像这样:
.jar
packages
jar files
fonts
json files
因此,当我尝试加载配置文件时,例如:
BufferedReader reader = new BufferedReader( new FileReader( path ) );
当我在Eclipse中运行应用程序时,一切都正常。但jar文件会抛出FileNotFoundException异常。 我看到许多关于这些问题的问答,建议使用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包中,那就太好了。