无法 运行 或使用 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
文件的模块路径)
我无法使用 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
文件的模块路径)