【发布时间】:2013-05-06 03:23:48
【问题描述】:
Launch4j 的设置似乎很简单,但在生成 exe 后,它就无法从其他位置运行。
用于创建启动器的 jar 文件仍需要与 exe 位于同一文件夹中。
我认为它会将 jar 包装在 exe 中并可以从任何地方运行它?我以前用 JSmooth 做过这个,效果很好。但 JSmooth 在 Windows 7 上不再支持。
也找不到任何合适的文档。
这里出了什么问题。
谢谢, 尚卡尔。
【问题讨论】:
标签: launch4j
Launch4j 的设置似乎很简单,但在生成 exe 后,它就无法从其他位置运行。
用于创建启动器的 jar 文件仍需要与 exe 位于同一文件夹中。
我认为它会将 jar 包装在 exe 中并可以从任何地方运行它?我以前用 JSmooth 做过这个,效果很好。但 JSmooth 在 Windows 7 上不再支持。
也找不到任何合适的文档。
这里出了什么问题。
谢谢, 尚卡尔。
【问题讨论】:
标签: launch4j
您的简单方案对我有用。我需要填写的唯一选项是输出文件、Jar 和 Min JRE 版本。其他一切都保留为默认值。
将所有外部库打包到 JAR 中,而不是打包到生成的 JAR 旁边的文件夹中,这一点很重要。为此,请在导出可运行 JAR 时在 Eclipse 中选择“将所需库提取到生成的 JAR”选项。
【讨论】:
如果我们谈论的是包含主类的 JAR,那么这是可配置的:http://launch4j.sourceforge.net/docs.html#Configuration_file
您要设置的是 dontWrapJar 到 true,但这是默认值,因此如果它不在 EXE 中,您必须更改某些内容。切换此布尔值时,可以清楚地看到大小差异(例如,在我的情况下,没有 JAR 的 40K 和包含 16K JAR 的 56,同样在 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 解决方案。
【讨论】: