我使用的是Windows 10,安装了Java 17,JAVA_HOME设置正确。java --version给出了以下内容:
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode, sharing)在Maven父POM中,我通过Launch4j 2.1.1配置了launch4j-maven-plugin,以便使用当前的launch4j-maven-plugin生成EXE:
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>generate-exe</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
...
<jre>
<minVersion>${maven.compiler.release}</minVersion>
</jre>
...这个父POM还指定了Java 8(尽管它需要9+来构建):
<properties>
<maven.compiler.release>8</maven.compiler.release>
...我的CLI项目POM使用上面的父POM。我构建的Maven项目没有问题,它生成my-cli.exe。我可以很好地运行my-cli.exe。
但是我想在我的CLI中使用Java 17,这应该可以,因为我已经安装了Java 17。因此,我在我的ClI项目中设置了以下内容:
<properties>
<maven.compiler.release>17</maven.compiler.release>
...我清理和重建这个项目,它像以前一样输出my-cli.exe。但是当我尝试运行my-cli.exe时,它会打印:
My CLI: This application requires a Java Runtime Environment 17然后它向https://java.com/en/download/打开我的浏览器。
从Launch4J Bug 197来看,Launch4J似乎没有查看JAVA_HOME环境变量,而是查看了JAVA_HOME注册表。这意味着它忽略了任何手动安装的JDK。因此,我使用阿托品并使用安装程序来安装最新版本OpenJDK17U-jdk_x64_windows_hotspot_17.0.2_8.msi。在我的Windows程序中,它显示了"Eclipse和Hotspot 17.0.2+8 (x64)“,不幸的是,同样的事情也发生了,Launch4J仍然不认识它。
为什么Launch4J不认识到OpenJDK 17.0.2+8是“17"?
发布于 2022-11-11 17:50:17
Launch4j文档用于<path>元素描述了解决方案:
..。可以使用JAVA_HOME或PATH环境变量搜索已安装的运行时,而无需添加用于搜索JRE的注册表项。
因此,只需将path元素添加到launch4j-maven-plugin配置:
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
...
<configuration>
...
<jre>
<path>%JAVA_HOME%;%PATH%</path>发布于 2022-03-12 19:34:15
显然,按照Launch4J特征请求103的规定,Launch4J不查看OpenJDK使用的相同注册表项,而只使用Oracle注册表项。有一个暗号64请求Adoptium使用与Oracle相同的注册表项,但是看起来这是因为问题而被放弃的。
正如在上面的特性请求中所指出的,Launch4J无论如何都应该查看JAVA_HOME环境。在对Launch4J Bug 197进行了更广泛的讨论之后,我发现现在可以指定包含%JAVA_HOME%的搜索路径,使用类似于Ilya的答案中提到的内容:
<jre>
<path>%JAVA_HOME%;%PATH%</path>
</jre>如果没有发现JDK,也可以将启动的URL更改为更有用的URL,或者(可能更适合CLI程序)将其全部删除。有关更多细节,请阅读Launch4J Bug 197。
https://stackoverflow.com/questions/71452422
复制相似问题