【问题标题】:Missing external jar files in jdk 11jdk 11 中缺少外部 jar 文件
【发布时间】:2020-04-22 08:12:29
【问题描述】:

我有一个使用 install4j 构建的应用程序,它使用 openjdk-8。现在我想将 openjdk-8 更改为 openjdk-11。我的应用程序只使用 jre 而不是完整的 jdk。在 jdk11 中没有单独的 jre。

AdoptOpenJDK 为 jdk-11 单独提供 jre,但缺少一些 jar 文件,并且 jre 中没有 lib\ext 文件夹。

我的问题是我可以在我从 AdoptOPenJDK 下载的 jre 中手动添加这些 jar 文件吗?

【问题讨论】:

  • Java 使用自 Java 9 以来的模块。只有少数例外作为 jar 交付以实现互操作性。但这似乎是xy problem。名为 ext 的文件夹中是否有 jar 文件并不重要。 JRE 的目的是执行 Java 软件。您在使用此 JRE 执行 Java 软件时遇到实际问题吗?
  • 通常情况下,应用程序使用 JRE 提供的类,而不是弄乱 jars。当应用程序需要特定缺失的 API 时,您必须为其命名,因为存在多种可能性。有 JRE 中未包含的 API、已删除的 API、现在由 3rd 方维护的 API,等等……
  • @deadshot,你找到解决这个问题的简单方法了吗?我有一个 jar 我想成为 JDK 11 的一部分,但不确定包含它的最简单方法(我意识到最简单的可能不是最好的)。

标签: java-8 java-11 adoptopenjdk


【解决方案1】:

根据 JDK 11 的 Oracle JDK Migration Guide,从 JDK 9 开始删除了 lib/ext 目录,并且该目录的存在将强制 javajavac 可执行文件退出。有关详细信息,请参阅本迁移指南第 15 页的主题已删除 JDK 9 中的扩展机制

对于 JavaFX,JDK 11 不再包含它。您可以获取 JavaFX 并将其作为模块化 (jmod) 或非模块化 (jar) 文件包含在您的安装中。有关详细信息,请参阅 Getting Started with JavaFX 参考文档,特别是 Runtime Images 下的子主题。

这两个指南都为迁移到 JDK 11 或更高版本提供了大量指导(Oracle 提供了其迁移指南的更新版本,最高可达 JDK 15)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 2019-07-21
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多