包 javax.jnlp 在模块 java.jnlp 中声明,它不在模块图中

package javax.jnlp is declared in module java.jnlp, which is not in the module graph

我有一个项目使用了Java webstart 技术。我决定将 Java 版本从 8 升级到 9。但是,我在编译时遇到以下错误:

error: package javax.jnlp is not visible
import javax.jnlp.DownloadServiceListener;
        ^
(package javax.jnlp is declared in module java.jnlp, which is not in the module graph)

我尝试将 C:\Program Files\Java\jdk-9\lib\javaws.jar 包含到类路径中,但仍然存在同样的问题。

看起来 java.jnlp 默认情况下未解析 class 路径上的代码(很像 Java EE modules)。解决方案是使用 --add-modules java.jnlp 显式添加它(javacjava 都接受该参数)。

此选项在 JEP 261: Module System or in this blog post 中讨论。

在 IntelliJ IDEA 中: 将 javaws.jar 添加到 Class 路径(文件 -> 项目结构 -> SDKs ->Class) C:\程序Files\Java\jdk-版本\lib\javaws.jar