【问题标题】:how to wrap java program into single-exe-file including signed jars like bouncycastle如何将 java 程序包装到单个 exe 文件中,包括像 bouncycastle 这样的签名 jar
【发布时间】:2016-02-20 11:45:17
【问题描述】:

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

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

对生成的“onejar”进行签名没有帮助,因为 bouncycastle 库需要一个受信任的签名授权。

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

有什么想法吗?

【问题讨论】:

    标签: java jar exe digital-signature


    【解决方案1】:

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

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

    可以在这里找到对所有部署 Java 应用程序的现有工具的一个很好的概述: http://www.excelsior-usa.com/articles/java-to-exe.html

    【讨论】:

    【解决方案2】:

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

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

    并通过 runtime 提供到主类 jar 的路径 <jar>myfolder/myjar.jar</jar>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多