Runnable jar找不到库

时间:2014-09-25 11:12:43

标签: java eclipse jar executable-jar

我有一个项目有一些依赖的罐子。我已将依赖的jar添加到项目中,然后将它们添加到构建路径中。 当我从eclipse运行它时,运行正常。

现在我想把它变成一个可运行的jar。 一旦我将其导出为Runnable jar以及选项"将所需的库打包到生成的Jar"中。

当我运行jar时,它会抛出Cannot find symbols错误。这些符号存在于依赖的罐子里,我不知道它为什么会发生。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

在将项目导出到 Runnable JAR文件时,您应该使用选项将所需库提取到生成的JAR 而不是将所需的包打包到生成的Jar

不同之处在于,为了打包所需的库,它将获取JAR文件并将它们放入JAR文件中。因此JAR文件中包含其他JAR文件。为此,您的主程序必须具备如何在主JAR文件中读取这些JAR文件的深入知识。

为了澄清,结果文件将如下所示:

project.jar/
   com/yourproject/Main.class
   dependencyA.jar
   dependencyB.jar

对于另一个选项,将所需的库提取到生成的JAR 中,将会发生这些依赖关系的解压缩然后打包到JAR文件中。这次不是作为JAR文件而是作为类和资源文件。此方法将允许Java从主JAR文件中查找依赖类文件。

结果现在看起来像这样

project.jar/
   com/yourproject/Main.class
   com/dependencyA/SomeClass.class
   com/dependencyA/SomeOtherClass.class
   ...

这个格式对于Java进程是可读的,它将在JAR中查找类和资源文件,而不是嵌套的JAR文件。