【问题标题】:launch4j exe can't find jrelaunch4j exe找不到jre
【发布时间】:2014-08-10 14:21:41
【问题描述】:

launch4j 的问题

程序包含一个通过 maven-shade 插件和一个 Data/ 的 uber jar 在任何 jre7 机器、windows 或 linux 上运行良好

但是我一直无法让 launch4j 工作。

launch4j config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<launch4jConfig>
  <dontWrapJar>false</dontWrapJar>
  <headerType>gui</headerType>
  <jar>pllsolver-0.2alpha.jar</jar>
  <outfile>pllsolver-0.2alpha.exe</outfile>
  <errTitle>NO JRE FOUND</errTitle>
  <cmdLine></cmdLine>
  <chdir></chdir>
  <priority>normal</priority>
  <downloadUrl>http://java.com/download</downloadUrl>
  <supportUrl></supportUrl>
  <stayAlive>false</stayAlive>
  <manifest></manifest>
  <icon>sicr.ico</icon>
  <jre>
    <path>jre7</path>
    <bundledJre64Bit>false</bundledJre64Bit>
    <minVersion></minVersion>
    <maxVersion></maxVersion>
    <jdkPreference>preferJre</jdkPreference>
    <runtimeBits>64/32</runtimeBits>
  </jre>
  <splash>
    <file>sicr.bmp</file>
    <waitForWindow>false</waitForWindow>
    <timeout>5</timeout>
    <timeoutErr>true</timeoutErr>
  </splash>
  <messages>
  </messages>
</launch4jConfig>

然后在 Windows 上构建,我试试这个:

PS K:\test> set PATH="K:\test\jre7\bin\"
PS K:\test> ..\launch4j\launch4jc.exe .\config.xml
launch4j: Compiling resources
launch4j: Linking
launch4j: Wrapping
launch4j: Successfully created K:\test\.\pllsolver-0.2alpha.exe
PS K:\test> .\pllsolver-0.2alpha.exe
PS K:\test>

此时,我得到了一个关于它如何未能找到 JRE 的漂亮小窗口。

Java 在 K:\test\jre7\bin\java.exe 我的罐子是 K:\test\pllsolver-0.2alpha.jar

此外,我不知道这是否会成为问题,但可执行文件和 Data/ 需要位于同一目录中。我计划稍后做更好的路径,但我对 Windows ENV 变量没有清楚的了解。

【问题讨论】:

  • 好的,我在jre目录下添加了%JAVA_HOME% set,在%PATH%中添加了%JAVA_HOME%\bin\ 然后我尝试了%JAVA_HOME%。 .. 结果同样糟糕。我迷路了。

标签: java linux windows launch4j


【解决方案1】:

有点晚了,但也许它仍然可以帮助你......

对于 launch4j 和 JRE 肯定有效的一件事是将 JRE 捆绑在应用程序的文件夹中。

这样做:

  • 使用您的“*.exe”在文件夹中创建路径“jre”
  • 在此文件夹中复制 JRE(此 jre 必须符合您设置的“最小”/“最大”条件)
  • 在 '.xml' 的 配置中设置 '/jre'

...这应该可以工作

【讨论】:

  • 以这种方式创建的 exe 可以独立运行,对吧?即当与 jre 不在同一个文件夹中时
  • ...对!你只需要在你的launch4J配置文件中设置jre的路径
  • launch4j 3.14:这不起作用。 ./jre 如果在同一个文件夹中 ../jre 如果你更深入 1 步(像 linux 一样工作)
【解决方案2】:

我在使用 launch4j 3.12 (2020) 和 OpenJDK 的 JRE 设置上苦苦挣扎,还收到了“找不到 Java 运行时”的消息。 我的目标是使用 OpenJDK (https://adoptopenjdk.net/) 有两种方法成功:

  1. 安装 OpenJDK,激活 JavaSoft (Oracle) 注册表项并选择“仅使用公共 JRE”launch4j 选项。
  2. 安装 OpenJDK,设置 JAVA_HOME 选项,并将 JRE 选项卡中的“捆绑的 jre 路径”设置为 %JAVA_HOME%(xml 内容:%JAVA_HOME%) 有了这个,您可以为不同的应用程序使用不同的 JRE,为每个不同的应用程序设置 JAVA_HOME 变量。

【讨论】:

    【解决方案3】:

    看来,launch4j 正在寻找相对于其“输出文件”位置的 JRE 路径。

    解决方案:

    • 您可以使用绝对路径,例如'C:\loc\of\jre'
    • 将您的 JRE 放入您的“outfile”目录并设置 JRE 路径,例如: 'jre'
    • 将 JRE 路径视为相对于“outfile”目录,例如'....\somefolder\jre'

    我的 launch4j 版本:3.14

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2019-10-09
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多