解决 jlink / jpackage 打包 Java 应用报错 Failed to launch JVM 或 SSL 握手失败 Received fatal alert: handshake_failure

0
(0)

Failed to launch JVM

打包后,在部分机器上无法启动,抛出异常 java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge 及 ClassNotFoundException: com.sun.java.accessibility.AccessBridge,搜索后发现问题可能与用户目录下的 .accessibility.properties 文件有关。

在 module-info.java 加入 requires jdk.accessibility; 一行,或在 jlink 命令中添加 –add-modules “jdk.accessibility” 解决问题。

Received fatal alert: handshake_failure

调试时可以正常请求的部分网站在打包后出现 SSL 握手失败,添加 JVM 参数 -Djavax.net.debug=ssl:handshake:verbose 查看详细握手过程可以发现,握手中出现 java.security.NoSuchAlgorithmException: Algorithm x25519 not available 和 java.security.NoSuchAlgorithmException: Algorithm x448 not available 异常,可以看到缺少相应加密算法。

同样在 module-info.java 加入 requires jdk.crypto.ec; 一行,或在 jlink 命令中添加 –add-modules “jdk.crypto.ec” 解决问题。

以上依赖都不会在 jdeps 中显示出来,注意避坑!

参考资料

[1] https://stackoverflow.com/questions/15260989/exception-in-thread-main-java-awt-awterror-assistive-technology-not-found
[2] https://stackoverflow.com/questions/62238883/java-security-nosuchalgorithmexception-algorithm-x25519-not-available

这篇文章有用吗?

点击星号为它评分!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注