【问题标题】:package javax.jnlp is declared in module java.jnlp, which is not in the module graph包 javax.jnlp 在模块 java.jnlp 中声明,它不在模块图中
【发布时间】:2017-07-31 15:33:01
【问题描述】:

我有一个使用 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 包含到类路径中,但仍然存在同样的问题。

【问题讨论】:

  • 您是否将requires javaws; 添加到您的module-info.java 中?如果是这样,请您添加构建版本和您的 module-info.java 文件。
  • @nullpointer 我根本没有使用module-info.java。除了javaws,所有其他包都默认包含在内。我认为这背后的原因是@Nicolai 在他的回答中解释的。无论如何,问题已经通过使用模块解决了。谢谢

标签: java java-web-start jnlp java-9


【解决方案1】:

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

此选项在JEP 261: Module Systemthis blog post 中讨论。

【讨论】:

  • Nicolai 是正确的,更多详细信息在 JEP 261 的“根模块”部分。原始问题还提到了 lib/javaws.jar - 当 JDK 8 或更早版本使用部署位时使用 JAR 文件在 JDK 9 中,它不打算用于类路径。
  • --add-modules xxxx 不是解决方案,而是解决方法
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2021-12-29
    • 2018-05-15
    • 2017-07-07
    • 2019-04-14
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多