JPackage 版本错误(%JAVA_HOME% 设置为正确目录)

Posted

技术标签:

【中文标题】JPackage 版本错误(%JAVA_HOME% 设置为正确目录)【英文标题】:JPackage Wrong Version (%JAVA_HOME% set to correct directory) 【发布时间】:2021-09-11 02:59:59 【问题描述】:

请帮忙。我在同步我的 JDK 和 jpackage 版本以创建独立的 java 程序时遇到问题。 jpackage 包含的 JDK 版本和运行时版本不匹配(JDK16 程序与 JDK15 运行时配对)。

在命令行中输入java -version,它与当前的%JAVA_HOME% 环境变量配置匹配,显示JDK16.0.2(位于C:\Program Files\Java\jdk-16.0.2)。这工作正常。

但是当我输入jpackage --version 时问题变得更加明显,它报告它正在使用 JDK15.0.1 - 据我所知,我从未安装过它,我不确定它从哪里运行。这是一个问题,因为我需要能够使用 jpackage 构建 Java16 程序。与现在一样,这会导致运行时和 JAR 文件不兼容。

我一直在谷歌搜索无济于事。我无法将我的 JDK16 程序编译到安装程序中,因为它一直在尝试使用 JDK15.0.1 作为运行时。

目前,我通过手动访问 JDK16 的 jpackage exe 并在后面添加命令,设法绕过了这个奇怪且看似锁定的配置:

“C:\Program Files\Java\jdk-16.0.2\bin\jpackage.exe”

任何建议都是有帮助的。也许这个临时的解决方法会对以后遇到同样问题的其他人有所帮助。

【问题讨论】:

不要发布错误消息的屏幕截图等。将文本复制并粘贴到问题本身中。 这些不是错误消息。我正在展示 jpackage 如何混淆它的 Java 版本。 %JAVA_HOME% 环境变量设置为什么? 他们是等等。我知道你在做什么。但是张贴截图是违反规则的。阅读:Please do not upload images of code/errors when asking a question. "java -version 正在展示当前的 %JAVA_HOME% 环境变量正常工作" - 这是不正确的说法。 java 命令不使用或不依赖于%JAVA_HOME%。事实上,java -version 输出仅告诉您%PATH% 上的java 版本是Java 16。 【参考方案1】:

使用 Windows where 命令找出 jpackage 命令实际解析的内容。似乎很明显,没有完整路径名的 jpackage 在 Java 的不同安装中解析为 jpackage

请注意,%JAVA_HOME% 不能确定 Windows cmd.exe 如何解析命令。命令解析根据%PATH%完成。

你描述的症状:

jpackage 表示 %JAVA_HOME% 不正确,但 %JAVA_HOME% 指的是 Java 16 jpackage -version 表示 Java 15(不是 Java 16) "C:\Program Files\Java\jdk-16.0.2\bin\jpackage.exe" 工作

都与您的 %PATH% 不正确一致......并且您确实在您的机器上安装了 Java 15,并且它在 %PATH% 之前或代替您尝试使用的 Java 16 安装。

注意jpackage 在 Java 16 中不再是“孵化器”工具。它已被提升为完全支持;见JEP 392: Packaging Tool。所以关于孵化器mudules的警告也与jpackage解决错误Java安装一致。


这真的归结为了解 Windows %PATH% 变量是什么以及它如何影响 Windows 命令 shell 的行为。 (类似于 Linux、UNIX 和 Mac OSX 命令 shell 中的 $PATH。)

【讨论】:

以上是关于JPackage 版本错误(%JAVA_HOME% 设置为正确目录)的主要内容,如果未能解决你的问题,请参考以下文章

Java 程序在 jpackage 时使用了错误的语言环境

jpackage 命令无法识别

如果应用程序打开,Jpackage MSI 升级未完成

JPackage 不生成工作 exe 和 bugs 文件夹

通过 jpackage 打包找不到或加载主类

如何在 Windows 上 JPackage RPM/PKG/DEB?