如何将java程序包装成单个exe文件,包括像bouncycastle

时间:2016-02-20 11:45:17

标签: java jar exe digital-signature

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

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

签署生成的“onejar”没有用,因为bouncycastle库需要一个可信赖的签名权限。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

另一个解决方案是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

答案 1 :(得分:0)

我找到了解决问题的方法,并想简要解释,也许有人感兴趣:

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

并通过提供主类jar的运行时路径 <jar>myfolder/myjar.jar</jar>

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