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

Eng*_*uad 9 java jnlp java-web-start java-9

我有一个使用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)
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*lai 8

它看起来像java.jnlp不是默认的类路径(就像在代码解析的Java EE模块).解决方案是显式添加--add-modules java.jnlp(两者javacjava接受该参数).

JEP 261:模块系统此博客文章中讨论了此选项.

  • Nicolai是正确的,更多细节在JEP 261的"根模块"部分.最初的问题还提到了lib/javaws.jar - 当JDK 8或更早版本使用JDK 9中的部署位时使用JAR文件,它不打算在类路径上使用. (4认同)