无法读取未命名的模块
Unnamed Modules cannot be read
我遇到了一个我不明白的非常讨厌的问题...
我们有一整套用 jdk8 编写的实用程序库,与拼图无关,所以我们也没有在 META-INF 文件中设置自动模块名称。
现在我们需要将使用这些实用程序库的产品迁移到 java11。
- 我创建了一个模块-info.java并输入了所有必需的模块,但是实用程序库存在一些问题。
- 一些实用程序库作为未命名模块加载,可以将它们添加为所需模块。但是对于这些实用程序库中的其他一些,不可能添加它们,因为它们没有根据它们的 jar 文件获得模块名称。
从我的 IDE 我得到以下错误:
包 'x' 在未命名模块中声明,但模块 'y' 未读取它。
包 x 在我们的实用程序库之一中,模块 y 是应该迁移到 java11 的产品。
有什么想法可以让我理解这个问题吗?
此致
我使用 AdoptOpenJDK jdk-11.0.3.7-hotspot 并在运行时出现以下异常消息
class A (in module A) cannot access class B (in unnamed module @0x12345678) because module A does not read unnamed module @0x12345678
并使用 --add-reads vm 参数解决了这个问题
--add-reads iamdsim.heat.adapter=ALL-UNNAMED
我在某处读到只有自动模块 "read" 默认情况下未命名的模块。但是我在 java.lang.module packagedoc.
中找不到它
编辑:记录在The State of the Module System
具有无法派生自动模块名称的名称的 jar 文件总是很痛苦。它发生在名称中的数字或保留字如 "interface"(例如 "db-interface-1.0.0.jar")。
这个具体问题的解决方案就是我的IDE。 IntelliJ 不支持从 IDE 中导入的 "projects" 读取 "unnamed modules" 或 "automatic modules"。我已经在 jetbrains 开始了错误报告。
我遇到了一个我不明白的非常讨厌的问题...
我们有一整套用 jdk8 编写的实用程序库,与拼图无关,所以我们也没有在 META-INF 文件中设置自动模块名称。
现在我们需要将使用这些实用程序库的产品迁移到 java11。
- 我创建了一个模块-info.java并输入了所有必需的模块,但是实用程序库存在一些问题。
- 一些实用程序库作为未命名模块加载,可以将它们添加为所需模块。但是对于这些实用程序库中的其他一些,不可能添加它们,因为它们没有根据它们的 jar 文件获得模块名称。
从我的 IDE 我得到以下错误:
包 'x' 在未命名模块中声明,但模块 'y' 未读取它。
包 x 在我们的实用程序库之一中,模块 y 是应该迁移到 java11 的产品。
有什么想法可以让我理解这个问题吗?
此致
我使用 AdoptOpenJDK jdk-11.0.3.7-hotspot 并在运行时出现以下异常消息
class A (in module A) cannot access class B (in unnamed module @0x12345678) because module A does not read unnamed module @0x12345678
并使用 --add-reads vm 参数解决了这个问题
--add-reads iamdsim.heat.adapter=ALL-UNNAMED
我在某处读到只有自动模块 "read" 默认情况下未命名的模块。但是我在 java.lang.module packagedoc.
中找不到它编辑:记录在The State of the Module System
具有无法派生自动模块名称的名称的 jar 文件总是很痛苦。它发生在名称中的数字或保留字如 "interface"(例如 "db-interface-1.0.0.jar")。
这个具体问题的解决方案就是我的IDE。 IntelliJ 不支持从 IDE 中导入的 "projects" 读取 "unnamed modules" 或 "automatic modules"。我已经在 jetbrains 开始了错误报告。