问题标签 [openjdk-11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
62 浏览

java - JavaFX11 中是否有用于替换 ClassBuilder 的新类

我正在将我的应用程序Java 1.7Java 11. 我的应用程序使用JavaFX. 在迁移过程中,我看到 TooltipBuilder、GridPaneBuilder、CircleBuilder 或 TextBuilder 等类不再存在。我们能找到它JDK11吗?更换它最好的方法是什么?

0 投票
0 回答
635 浏览

eclipse - 在 Eclipse 中使用 Maven 集成为 OpenJFX 11 项目创建 Windows 可执行文件

我正在从 Java 8(Oracle JDK)切换到 OpenJDK 11 和 OpenJFX 11。我已经成功地让我的项目通过 Maven 通过clean javafx:run命令在 Eclipse 中工作,maven-compiler-plugin但是我在构建可运行的 jar 和 windows 可执行文件时遇到了问题。我不需要可运行的 linux 或 mac,因为这个项目只是一个内部产品,我们只使用 windows。

我已经尝试了几个插件,例如maven-shade-plugin,也尝试运行mvm package无济于事。我已经尝试过这个Build executable JAR with JavaFX11 from maven和这个How to deploy a JavaFX 11 Desktop application with a JRE

过去我可以通过 Eclipse 的“Export Runnable Jar”选项构建一个可执行 jar,然后通过 launch4j 创建一个可执行文件,但这似乎不再起作用,我理解这可能是由于 OpenJDk 9+ 的模块化结构。

我添加了所有 JavaFX 依赖项以及我需要的 JAXB 依赖项,并且在构建它时它在 IDE 中运行(尽管一旦我让它在 Maven Run 中运行,我就无法让它作为 Java 应用程序运行配置运行配置。

这是我的插件:

这是我尝试运行时的错误消息mvn clean package

0 投票
1 回答
1493 浏览

java - jlink 出品的定制JRE 体积大,jre 最小

我正在尝试为纤薄的 Docker 映像提供最小的 JRE。使用 Ubuntu 上的 open-jdk-11 附带的 jlink 11.0.4,使用此自定义 JRE 构建的映像实际上大于使用默认 JRE 构建的映像。我认为这是由于 cutom_jre/lib/server/libjvm.so 的大小非常大

我正在关注来自 Arun Gupta 的 Kubernetes for Java Developers on Linkedin Learning。在某些时候,我注意到我的 Ubuntu 实例上有一个奇怪的行为。除了这门课程,我还需要为一个最小的 Spring Boot 应用程序提供一个自定义 JRE,以便将它用于一个纤薄的 Docker 映像。

这种方法在课程中运行良好,并且大小my_jre适合为应用程序构建最小的 Docker 映像。问题是在我的设置中我使用了 openjdk-11,而不是 openjdk-9。

使用我的设置,生成的大小my_jre会非常大(~380mb)。经过一番调查,我发现这主要而且可能只是由于my_jre/lib/server/libjvm.so.

jlink在此尝试之前,我没有任何经验。经过一些试验和错误,并浏览了 github 上的类似问题,我找到了 jlink 功能之外的解决方法。

此解决方法来自binutils包和strip实用程序。

使用该标志运行该strip实用程序--strip-unneeded将缩小 libjvm.so 的大小,并有可能实现主要目标:为苗条的 Docker 映像提供最小的 JRE(~113mb)。

我希望有知识的人能更深入地解释这种天赋的背景。就这种行为而言,从 jdk9 到 jdk11 还有什么变化?除了 jdk9+ 提供的工具(例如 jlink)之外,是否有任何标准流程可以在没有任何外部工具的情况下实现这一目标?

0 投票
0 回答
6325 浏览

java - java.lang.module.ResolutionException

我正在尝试在 Eclipse 下使用 open-jdk-11 编译和运行模块化 Java 项目。

主.java:

模块信息.java:

Eclipse下编译没问题: Eclipse 快照

但是 Eclipse 运行说:

启动层 java.lang.module.ResolutionException 初始化时出错:模块 jaxb.core 和 jaxb.impl 将包 com.sun.xml.bind.v2.model.util 导出到模块 aubin

命令行运行说:

请注意,命令行编译也会失败:

我想 module-info.java 不完整,但我不知道如何纠正它

0 投票
0 回答
252 浏览

java - 如何在 JavaFX11 中替换 SkinBase 的继承

我正在迁移一个包含JavaFX 2to的应用程序OpenJDK11。由于SkinBasewith的继承消失,我有一个错误StackPane。我不能再使用像事件方法(定义在Node),getChildren()(定义在Parent)和许多其他需要继承的方法......

这是我在 JDK11 中想要的 Java 1.7 中的上一个类:

这些方法继承自 Class Node 或 Parent 这很有效,因为 SkinBase 的签名是(在 JavaFX8 之前):

StackPane 是 Pane 的子节点,它是 Region 的子节点,Region 是 Parent 的子节点,也是 Node 的子节点。

现在,在 JDK11 中,SkinBase 的签名是

Inheritence 不再存在,这些函数也不再定义(super() 也没有)。解决这个问题的最佳方法是什么?谢谢您的回答 !

0 投票
3 回答
4251 浏览

java-11 - 将 sun.reflect 包与 openjdk11 一起使用

有没有办法在 OpenJDK11 中使用 sun.reflect,可能在“--add-exports”中添加一些东西?我们的代码失败了,因为 jide pkg 内部使用了 sun.reflect 包,我正在尝试看看是否有办法让它工作。

我已经尝试过以下方法,但这无济于事。

“--add-exports jdk.unsupported/sun.reflect=ALL-UNNAMED”

这是一个例外,基础类引用sun.reflect.Reflection

0 投票
1 回答
2071 浏览

java - 内存非常大的机器上的 OpenJDK MaxRAMPercentage

在具有 60GB 内存(甚至更多)的机器上运行 OpenJDK 11 时, MaxRAMPercentage仅允许我最多分配大约 30GB。

这可以正常工作:

但是当百分比应该产生超过 30G 的堆大小时,我得到:

使用好的旧-Xmx作品(例如-Xmx50G)。

我错过了什么?MaxRAMPercentage应该是有界的?

0 投票
2 回答
558 浏览

java - 运行 JAR 文件需要 JAXB

我安装了 OpenJDK 11。我需要从 Internet 运行 jar 应用程序,它会抛出关于 JAXB 的异常。如何将 JAXB 添加到 OpenJDK 11 以使该应用程序可以工作?

这里的问题只是告诉我添加到 maven 但这个应用程序我刚刚得到了 jar 文件。

0 投票
1 回答
7413 浏览

java - OpenJDK 11 错误“无法初始化加密机制”

我有一个用 openJDK (Amazon Correto 11) 和 openJFX 编写的应用程序。

当我在本地运行应用程序时 - 一切正常。但是当我从网络共享执行应用程序时出现异常:

我使用命令运行应用程序:

\\\some-network-share\app\jre\bin\javaw.exe -jar myapp.jar

因为在这个网络共享上,我复制了 Amazon Correto 11 JDK 文件和我用于应用程序的其他库。

我在另一个线程中运行 get request 并且该线程引发异常。

我怎样才能克服这个问题?

请帮忙。

我尝试了不同的库: 1. OkHttpClient 2. Java Unirest

但在两个相同的错误。

编辑 1我添加了额外的堆栈跟踪 - 请检查

0 投票
2 回答
501 浏览

java - OpenJDK 11.0.4 在类路径中有 java-atk-wrapper.jar

我在尝试通过 .jar 从应用程序的 .jar 文件加载 MANIFEST.MF 时注意到了这个问题class.getResource("/META-INF/MANIFEST.MF")

而不是得到我自己的清单,清单似乎是从/usr/share/java/java-atk-wrapper.jar. 但是,此 jar 未指定为我的应用程序类路径的一部分 - 我尝试禁用 java 可访问性辅助技术(此处),但这没有效果。

有趣的是,这种行为特定于 OpenJDK-11.0.4。使用 11.0.3 时不会出现此问题。任何人都可以阐明这里可能发生的事情吗?java-internal jars/classes 的加载/访问方式是否有某种变化?或者这可能只是 11.0.4 中引入的一个错误?

最小的工作示例:

然后运行:

此代码片段的预期行为是抛出 NPE,因为没有清单资源。相反,清单是从 atk-wrapper 加载的。

环境细节:

Ubuntu 16.04.5 LTS

OpenJDK 是通过 apt 全新安装的

apk-wrapper没有明确安装。在我们的一台机器上发生此问题之前,我不知道它的存在——此时我也能够在我的本地机器上重现它。