导出Runnable jar丢失目录结构

时间:2015-11-23 06:02:18

标签: java eclipse jar

我在Eclipse中有一个Java项目,具有以下目录结构:

Root
----->Data
----->lib
----->src
      ----->packageName
            ------------> Main.java

lib文件夹包含项目所依赖的所有jar和一些其他文件。数据包含项目处理的一些wav文件。 我想从命令行运行这个项目,因此我将这个项目导出为一个可运行的jar。但是,当我这样做时,我看到生成的jar包含数据的所有内容和根文件夹本身中的lib文件夹,并且data / lib文件夹完全消失了。

我没有成功尝试过什么:

我使用WinRar简单地将具有适当内容的数据和lib文件夹添加到生成的Jar中。但是,当我运行此Jar时,编译器无法找到Data和Lib文件夹中的文件。

有关如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我认为Datalib被添加到Eclipse中的类路径中。引用其内容时,可以通过类路径根目录中的路径来实现。当打包然后na jar时,Eclipse将类路径中列出的每个目录的内容放入一个目录中。但是,子目录将被保留。

要保留Data,可以将其放在目录中,约定是将此resources命名为,并将此目录添加到类路径而不是Data。但是,在Data中访问文件的任何地方,您都需要调整路径,因为现在Data成为路径的一部分(来自类路径根目录的相对路径)。

至于lib,你不能做同样的事情,因为当你访问它的内容时(我想通过import语句)你可能没有办法指定一个子目录。

以上假设您通过类路径路径访问这些资源。如果您使用文件系统路径访问它们,则需要更改所有这些访问以使用使用类路径的方法,例如ClassLoader中的各种getter。