【问题标题】:How do I configure install4j to run a java executable jar file which contains other jar files?如何配置 install4j 以运行包含其他 jar 文件的 java 可执行 jar 文件?
【发布时间】:2026-01-19 15:25:01
【问题描述】:

我有一个 java 可执行 jar 文件,其中嵌入了许多其他 jar 文件。它使用simon tuffs onejar 来完成此操作。当我双击 jar 或从命令提示符发出“java -jar myApp.jar”时,该 jar 会正确运行。 jar 文件有一个 manifest.mf,其中包含:

Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Expand: expand,doc

Install4j 将此 jar 文件正确复制到我的 bin 文件夹,但它创建的“myApp.exe”无法启动。我明白了:

java.lang.ClassNotFoundException: com.ndi.foreCee.programs.MyApp

或:

java.lang.ClassNotFoundException: com.simontuffs.onejar.Boot

取决于我插入 install4j 的配置 Java 调用页面“主类”的内容。我已将“类路径:”设置为“存档 bin\myApp.jar”。

谁能告诉我如何配置 install4j 来构建一个只发出“java -jar myApp.jar”的 exe,使用嵌入式 jre?

【问题讨论】:

    标签: java install4j onejar


    【解决方案1】:

    将“运行可执行文件或批处理文件”操作添加到“安装屏幕”并设置以下属性:

    “可执行”属性:${installer:sys.javaHome}/bin/java

    “参数”属性:-jar; filename.jar(在编辑器中每行一个参数)

    Install4j : How to execute command line java -jar filename.jar at the end of installation

    【讨论】:

      【解决方案2】:

      谁能告诉我如何配置 install4j 来构建一个只发出“java -jar myApp.jar”的 exe,使用嵌入式 jre?

      install4j生成的启动器根本不执行java,它使用JNI创建JVM。

      您可以从命令行使用参数/create-i4j-log 启动可执行文件,以获取显示传递给JVM 的参数的日志文件。

      【讨论】:

        【解决方案3】:

        我通过更新我的 ant 构建并删除 simon tuffs one-jar 并将其替换为以下内容解决了我的问题: 如Including external jar-files in a new jar-file build with Ant 中所述。之后,Install4J 启动器按照宣传的方式运行(以及 M2E67 所描述的)。

        【讨论】:

          最近更新 更多