如何将 install4j 配置为 运行 包含其他 jar 文件的 java 可执行 jar 文件?

How do I configure install4j to run a java executable jar file which contains other jar files?

我有一个 java 可执行 jar 文件,其中嵌入了许多其他 jar 文件。它使用 simon tuffs onejar 来完成此操作。当我双击它或从命令提示符发出 '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 调用页面 'Main class' 的内容。我已将 'Class path:' 设置为 'Archive bin\myApp.jar'。

谁能告诉我如何使用嵌入式 jre 配置 install4j 来构建只发布 'java -jar myApp.jar' 的 exe?

Can anyone tell how to configure install4j to build an exe that just >issues 'java -jar myApp.jar', using the embedded jre?

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

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

向 "Installation screen" 添加 "Run executable or batch file" 操作并设置以下属性:

"Executable" 属性: ${安装程序:sys.javaHome}/bin/java

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

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

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