无法 运行 或使用 Java 10 和 Java 11 导入 JAR

Can't run or import JARs with Java 10 and Java 11

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

例如:

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

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

  • 删除 module-info.java 以不使用 JPMS 并使用 classpath,如 Java 8
  • module-info.java 中添加行 requires mongo.java.driver; 以添加模块 mongo.java.driver(导出包 com.mongodb)到模块路径(自 Java 9 起,您可以使用不带 module-info.java 文件的类路径或带有 module-info.java 文件的模块路径)