如何将 java 程序包装成单个 exe 文件,包括像 bouncycastle 这样的签名 jar

how to wrap java program into single-exe-file including signed jars like bouncycastle

我需要将一个 java 程序(带有一个 bundle jre)打包成一个 exe 文件。直到现在我一直使用 Launch4J。不过 Launch4j 只接受一个 jar,所以我总是在调用 launch4j 之前将所有外部库打包到一个 jar 中。

这不适用于 bouncycastle 库,因为它们已签名,将它们提取并重新打包到单个 jar 中会损坏签名。

对生成的 "onejar" 签名没有帮助,因为 bouncycastle 库需要受信任的签名授权。

除了接受外部 jars 的 Launch4j 之外,我没有找到任何其他最近的 exe 包装器。

有什么想法吗?

我找到了解决问题的方法,想在这里简单解释一下,也许有人感兴趣:

您可以指示 Launch4j 不将 jars 包装到 exe 中,而是在外部文件夹中访问它们。为此,设置 <dontWrapJar>true</dontWrapJar>

并通过 <jar>myfolder/myjar.jar</jar>

所有其他外部库都可以放在单独的库文件夹中。 (来自 <classPath><cp>mylibraries</cp></classPath>

另一种解决方案是 oracle java (fx) 打包工具。这对我来说花了一点时间,但最后我认为这是目前(2016 年)这个问题的最佳解决方案,因为它是全新的并且从一个版本到另一个版本都在更新。它称为 javafxpackager,但它也适用于非 fx 应用程序。它可以为 Win、Mac 和 Linux.

生成应用程序

有关 java(fx) 打包程序的更多详细信息,请参见此处: http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

可以在此处找到部署 java 应用程序的所有现有工具的完整概述: http://www.excelsior-usa.com/articles/java-to-exe.html