【发布时间】:2020-10-02 02:05:14
【问题描述】:
一个例子:由于 JavaFx 从 JDK 中删除,JavaFx SDK 现在作为一组模块化 jar 分发。要编译 JavaFx 应用程序,当然必须将它们放在模块路径中:
javac -p /path/to/jars/ App.java
然而,这还不够。尝试编译会导致很多类似
的错误sample/App.java:3: error: package javafx.application is not visible
import javafx.application.Application;
^
(package javafx.application is declared in module javafx.graphics, which is not in the module graph)
要解决这个问题,我们可以使用 --add-modules 添加 javafx.graphics:
javac -p /path/to/jars/ --add-modules javafx.graphics App.java
如果我们改为向项目添加一个 module-info.java(仅包含 module ui {}),我们就没有问题。
为什么模块路径上的模块对命名模块可见,但对未命名模块不可见?
【问题讨论】:
-
您使用哪个 Java 版本进行编译?
-
@ZhekaKozlov Java 11。Java 9 和 Java 11 处理模块有区别吗?
-
不,至少在这种特殊情况下。我原以为可能会有一些差异,但事实证明这无关紧要。无论如何,没关系。
标签: java java-9 java-11 java-module java-platform-module-system