Launch4j 似乎设置起来很简单,但在生成 exe 后,它不会从其他位置运行。
用于创建启动器的 jar 文件仍需要与 exe 位于同一文件夹中。
我认为它会将 jar 包在 exe 中并可以从任何地方运行它?我以前用 JSmooth 做过这个,效果很好。但 JSmooth 在 Windows 7 上不再支持。
也找不到任何合适的文档。
这里出了什么问题。
谢谢,香卡尔。
Launch4j 似乎设置起来很简单,但在生成 exe 后,它不会从其他位置运行。
用于创建启动器的 jar 文件仍需要与 exe 位于同一文件夹中。
我认为它会将 jar 包在 exe 中并可以从任何地方运行它?我以前用 JSmooth 做过这个,效果很好。但 JSmooth 在 Windows 7 上不再支持。
也找不到任何合适的文档。
这里出了什么问题。
谢谢,香卡尔。
你的简单场景对我有用。我需要填写的唯一选项是输出文件、Jar 和 Min JRE 版本。其他一切都保留为默认值。
将所有外部库打包到 JAR 中而不是生成的 JAR 旁边的文件夹中,这一点很重要。为此,请在导出可运行 JAR 时在 Eclipse 中选择“将所需库提取到生成的 JAR”选项。
如果我们谈论的是包含主类的 JAR,那么这是可配置的:http: //launch4j.sourceforge.net/docs.html#Configuration_file
你想要设置的是dontWrapJar,true
但这是你有的默认值如果它不在 EXE 中,则更改某些内容。当切换这个布尔值时,可以清楚地看到大小差异(例如,在我的情况下,它是 40K 没有 JAR 和 56 包含 16K JAR,同样在 Total Commander 中,如果它有 JAR,我可以使用 Ctrl+PgDn 像任何其他 ZIP 一样输入 EXE包括)。
在使用com.akathist.maven.plugins.launch4j:launch4j-maven-plugin
插件时的 POM 文件中,该选项的名称相同 - dontWrapJar
。在这种情况下,jar
选项必须指向构建的 JAR(在目标中),因为它与 EXE 相关(并且都指向目标)在大多数情况下它只是 JAR 的名称。当 JAR 位于 EXE 旁边时,无需运行 EXE,可以将其移除以进行检查。
这并没有说明其他依赖项还有其他选项,如果您需要 EXE 中的所有内容,而不是使用一些 uberjar 解决方案。