【问题标题】:Can't run or import JARs with Java 10 and Java 11无法使用 Java 10 和 Java 11 运行或导入 JAR
【发布时间】:2018-10-16 12:32:01
【问题描述】:

我无法使用 Java 10 或 Java 11 运行 .jar 存档(它们以 NoClassDefFoundError 退出)。同样,我也无法将 .jar 档案导入 Java 项目;它们出现在 Classpath 中,但 Eclipse 说无法解析导入。当我降级到 Java 8 时,我能够很好地运行 .jar 存档,并且它们也可以在任何导入它们的 Java 项目中被识别。

例如:

我正在将mongo-java-driver-3.8.2 导入到 Eclipse Photon 上的 Java 项目中。我将.jar 添加到项目的类路径(项目-> 属性-> Java 构建路径)。然而,Eclipse 输出The import com.mongodb cannot be resolved,如下图所示:

【问题讨论】:

  • 你必须明白 classpath 现在并不孤单,它伴随着一个叫做 modulepath 的东西,而且你的 jars 必须出现在其中任何一个中。从您的设置中听起来,理想情况下 Eclipse 应该会解决这个问题,在其他几个问题中似乎工作正常。也就是说,请检查您正在使用的 Eclipse 版本以及您正在使用的 jar(库)与 Java10/11 的兼容性。
  • 请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
  • 我猜你看到了模块路径与类路径的效果。但是你的问题读起来就像一个人打电话给他的车库“我的车发出奇怪的声音。现在告诉我如何解决这个问题”。鉴于我们目前获得的信息量,我们做不到。
  • 你使用JPMS(默认包是否包含module-info.java文件)?
  • 它确实包含该文件。 @GhostCat 对不起。我已经编辑了我的原始问题以包含一个示例。

标签: java eclipse jar java-10 java-11


【解决方案1】:

如果默认包包含 module-info.java 文件,则您使用的是 Java 平台模块系统 (JPMS),您有两种选择:

  • 删除 module-info.java 以不使用 JPMS 并像在 Java 8 中一样使用 类路径
  • module-info.java 添加行 requires mongo.java.driver; 将模块 mongo.java.driver(导出包 com.mongodb)添加到 modulepath(从 Java 9 开始您可以使用没有module-info.java 文件的类路径或带有module-info.java 文件的模块路径)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 2011-11-18
    • 2023-03-08
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多