首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Launch4J不承认Eclipse Java 17

Launch4J不承认Eclipse Java 17
EN

Stack Overflow用户
提问于 2022-03-12 19:10:09
回答 2查看 865关注 0票数 1

我使用的是Windows 10,安装了Java 17,JAVA_HOME设置正确。java --version给出了以下内容:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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+来构建):

代码语言:javascript
复制
<properties>
  <maven.compiler.release>8</maven.compiler.release>
...

我的CLI项目POM使用上面的父POM。我构建的Maven项目没有问题,它生成my-cli.exe。我可以很好地运行my-cli.exe

但是我想在我的CLI中使用Java 17,这应该可以,因为我已经安装了Java 17。因此,我在我的ClI项目中设置了以下内容:

代码语言:javascript
复制
<properties>
  <maven.compiler.release>17</maven.compiler.release>
...

我清理和重建这个项目,它像以前一样输出my-cli.exe。但是当我尝试运行my-cli.exe时,它会打印:

代码语言:javascript
复制
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"?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-11 17:50:17

Launch4j文档用于<path>元素描述了解决方案:

..。可以使用JAVA_HOME或PATH环境变量搜索已安装的运行时,而无需添加用于搜索JRE的注册表项。

因此,只需将path元素添加到launch4j-maven-plugin配置:

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2022-03-12 19:34:15

显然,按照Launch4J特征请求103的规定,Launch4J不查看OpenJDK使用的相同注册表项,而只使用Oracle注册表项。有一个暗号64请求Adoptium使用与Oracle相同的注册表项,但是看起来这是因为问题而被放弃的。

正如在上面的特性请求中所指出的,Launch4J无论如何都应该查看JAVA_HOME环境。在对Launch4J Bug 197进行了更广泛的讨论之后,我发现现在可以指定包含%JAVA_HOME%的搜索路径,使用类似于Ilya的答案中提到的内容:

代码语言:javascript
复制
<jre>
  <path>%JAVA_HOME%;%PATH%</path>
</jre>

如果没有发现JDK,也可以将启动的URL更改为更有用的URL,或者(可能更适合CLI程序)将其全部删除。有关更多细节,请阅读Launch4J Bug 197

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71452422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档