在将项目转移到 Gradle 时,我停止使用 org.json 的自定义构建,该构建安装了 module-info.java 以符合模块系统。现在,我通常通过 Maven 使用它,并且由于 org.json 默认情况下不是一个模块,因此它被放入未命名的模块中。
我的模块信息如下所示:
open module mymodule {
requires java.desktop;
requires java.logging;
}
我收到错误:
SomeSourceFile.java: error: package org.json is not visible
import org.json.*;
^
(package org.json is declared in the unnamed module, but module mymodule does not read it)
这是合乎逻辑的,除了我不知道为什么我的模块不读取未命名的模块(未命名模块的目的是与非模块化软件完全向后兼容,因此所有包都会导出等),以及我如何制作我的模块读取未命名的模块。如您所见,我已经尝试打开我的模块,但没有成功。
也许更新 Maven 编译器插件(例如,更新到 3.8.1)就可以解决问题。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
</plugins>
</build>
另一件事是需要 JSON 模块。从他们的 pom.xml 中,我可以看到他们将 Automatic-Module-Name 声明为 org.json (https://github.com/stleary/JSON-java/blob/master/pom.xml#L186 https://github.com/stleary/JSON-java/blob/master/pom.xml#L186)
所以你的 module-info.java 将变成这样:
open module mymodule {
requires java.desktop;
requires java.logging;
requires org.json;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)