我有一个项目有一些依赖的罐子。我已将依赖的jar添加到项目中,然后将它们添加到构建路径中。 当我从eclipse运行它时,运行正常。
现在我想把它变成一个可运行的jar。 一旦我将其导出为Runnable jar以及选项"将所需的库打包到生成的Jar"中。
当我运行jar时,它会抛出Cannot find symbols
错误。这些符号存在于依赖的罐子里,我不知道它为什么会发生。
任何人都可以帮助我吗?
答案 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文件。