【问题标题】:java.lang.ClassNotFoundException in runnable jar exported by EclipseEclipse 导出的可运行 jar 中的 java.lang.ClassNotFoundException
【发布时间】:2017-07-04 17:42:02
【问题描述】:

我正在使用 Eclipse 将我的项目导出到可运行的 jar 中。

我正在使用一些库,即 Apache commons、Java FX 和 GSON。

我已将这些库添加到我在 Eclipse 中的构建路径中:

导出时,我选择将需要的库打包到生成的jar中: 这将创建一个名为 Editor.jar 的 jar

但是,当我执行“java -jar Editor.jar”时,我得到了 EqualsBuilder 类的 java.lang.ClassNotFoundException,它是 Apache commons 的一部分。

我尝试将 apache commons-lang3-3.4.jar 文件复制到工作目录中。我还尝试在“-jar”之前添加“-cp commons-lang3-3.4.jar”。仍然我总是得到 ClassNotFoundException。

有人看到我错过了什么吗?谢谢。

【问题讨论】:

  • 使用任何提取工具打开 Editor.jar 并检查您的 jar 中是否有第三方 jar。如果是,请检查 Rsrc-Class-Path: 的路径。和类路径:.在你的 jar 的 MANIFEST.MF 文件中。
  • @Leozeo 感谢您的回复。打开 jar 后,我看到 GSON 和 FX jar 已包含在内,但未包含 Apache Commons jar。我想知道为什么?我回到构建路径并将 jar 添加为外部 Jar,现在部署的构建工作。然而,Apache Commons 现在在我的 Eclipse 构建路径中出现了两次,一次作为添加的“库”,一次作为添加的“外部 Jar”。
  • 作为一般规则,在使用 Eclipse 时,我应该始终将外部库作为库和外部 Jar 添加吗?

标签: java eclipse jar executable-jar apache-commons


【解决方案1】:

在导出时选择该选项,如果您不选择该选项,那么您可能必须使用 -cp 自行解决依赖关系

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2017-05-13
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2018-08-03
    • 2012-12-06
    相关资源
    最近更新 更多