java - 如何让 Launch4j XML 配置正确捆绑 JRE?

标签 java xml launch4j

我有一个程序,我真的很想使用专用的 JRE,而不是要求我的客户下载 Java。我使用 Launch4j 作为构建工具,并一直在尝试使用捆绑的 JRE 功能。我已将 JRE 复制到我的程序目录中,并设置如下:

//home/user/Program Name:

/cfg (contains Launch 4j xml build file)
/bin (contains signature key, exe, and Jar file)
/Runtime (contains working copy of JRE)

我尝试修改 xml 以直接指向 JRE 中的 Javaw.exe,但这没有什么区别。我还尝试将以下行添加到其他 SO 论坛的 xml 中,但老实说,我不能 100% 确定它的作用:

<opt>-DgvSIG.confDir=../cfg</opt>

我的问题是我需要对 xml 配置进行哪些修改,以便任何远程用户无需第一次下载 Java 就可以打开我的程序。我使用的是 Windows,目前只在 Windows 上运行就可以了。这是我的 xml:

<launch4jConfig>
  <dontWrapJar>false</dontWrapJar>
  <headerType>console</headerType>
  <jar>C:\Users\zrr81\Climate Dev Pegasus\bin\ClimateDevPegasus_Alpha.jar</jar>
  <outfile>C:\Users\zrr81\Climate Dev Pegasus\bin\ClimateDevPegasus_Alpha.exe</outfile>
  <errTitle></errTitle>
  <cmdLine></cmdLine>
  <chdir>.</chdir>
  <priority>normal</priority>
  <downloadUrl>http://java.com/download</downloadUrl>
  <supportUrl></supportUrl>
  <stayAlive>false</stayAlive>
  <restartOnCrash>false</restartOnCrash>
  <manifest></manifest>
  <icon>C:\Users\zrr81\Climate Dev Pegasus\Pegasus.ico</icon>
  <jre>
    <path>Climate Dev Pegasus\Runtime\jdk-13.0.1\bin\javaw.exe</path>
    <bundledJre64Bit>true</bundledJre64Bit>
    <bundledJreAsFallback>false</bundledJreAsFallback>
    <minVersion>1.5.0</minVersion>
    <maxVersion>13.0.2</maxVersion>
    <jdkPreference>preferJre</jdkPreference>
    <runtimeBits>64/32</runtimeBits>
  </jre>
</launch4jConfig>

最佳答案

事实证明,解决这个问题相当简单,但很难找到正确的信息。 Launch 4J 中有一个设置可以让您强制使用本地 JDK 并防止程序尝试强制全新安装:

enter image description here

当您推送该设置时,它将允许您使用捆绑的 JRE 并在 XML 中生成以下行:

<jdkPreference>jdkOnly</jdkPreference>

关于java - 如何让 Launch4j XML 配置正确捆绑 JRE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61640809/

相关文章:

java - DOM getElementsByTagName() 返回具有 NULL 值的节点

java - 我的方法中是否可以返回多个项目?

java - 不确定如何在从 ObjectInputStream() 加载后显示对象

Python 错误 : ImportError: No module named 'xml.etree'

从 XML 字段作为多条记录进行 SQL SELECT

java - 外部 jar/库 launch4j 问题

gradle - Gradle-launch4j-在Proguard之后包装 jar

java - 在另一台计算机上运行 Java/Selenium 程序

java - 在 Java 5/6 中重定向 ProcessBuilder 的输出?

java - XSLT 和 XSL,谁实现它们?