【问题标题】:Runnable jar not finding libraries可运行的 jar 找不到库
【发布时间】:2014-09-25 11:12:43
【问题描述】:

我有一个项目,它有一些依赖的 jars。我已将依赖的 jar 添加到项目中,然后将它们添加到构建路径中。 当我从 Eclipse 运行它时,它运行良好。

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

当我运行 jar 时,它会抛出 Cannot find symbols 错误。这些符号在依赖的 jar 中,我不知道为什么会这样。

谁能帮帮我?

【问题讨论】:

    标签: java eclipse jar executable-jar


    【解决方案1】:

    当您将项目导出到可运行的 JAR 文件时,您应该使用选项Extract required libraries into generated JAR,而不是Package required libraries into generated 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
       ...
    

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

    【讨论】:

    • 做到了,还是同样的问题。
    • 运行 JAR 文件时能否粘贴完整错误?
    猜你喜欢
    • 1970-01-01
    • 2020-05-16
    • 2013-04-12
    • 2013-01-16
    • 2012-01-27
    • 2016-12-28
    • 2012-04-14
    • 2015-03-01
    • 2013-06-30
    相关资源
    最近更新 更多