23

我想创建一个 JAR 文件,我想在客户端机器上运行它。所以,我有几个问题:

  1. 如何将 JAR 文件转换为 EXE 文件?
  2. 如何加密 JAR 文件的内容?jar 文件可以使用 WinRAR 提取,并且可以使用任何 Java 反编译器对类进行反编译。
  3. 如何创建安装程序?我的客户没有任何 JVM,我也不想附带 JDK 或 JRE,因为它们的体积很大。
4

9 回答 9

18
  1. 请参阅此链接:Java 到 Exe。它还解释了这样做的正当理由,以及什么时候不应该这样做。

  2. 您不能真正加密二进制文件,因为机器必须理解它们。也就是说,优化的可执行文件很难反编译,而普通的类文件很容易。

  3. 如果你有一个 exe,那么安装程序就足够了。

于 2010-02-16T10:32:59.173 回答
9

JSmooth 是一个应用程序,它将你的 Jar 包装在一个 exe 中

它还允许您检查要部署到的系统上是否有正确版本的 JRE

http://jsmooth.sourceforge.net/

于 2010-02-16T10:31:51.720 回答
4

至于1):我猜你不能。那里可能有工具,但你不能使用 JDK 附带的标准工具来做到这一点,因为它会破坏平台独立性。(请参阅其他答案,提供此类 3rd 方工具的链接)

至于3):使用InnoSetup创建安装程序。在安装程序中包含 JRE 并让 InnoSetup 即时安装它。

于 2010-02-16T10:32:22.923 回答
4

您无法阻止反编译。你能做的最好的事情就是让这样做更难或更耗时。不过,作为对您问题的回答,我相信您可以使用gcj将 Java 编译成 EXE。

于 2010-02-16T10:35:23.153 回答
3

可能是Excelsior JET将满足您的需求。)恕我直言非常成熟的产品。

于 2010-02-16T10:35:44.257 回答
3

1)我最近尝试了jarToExe程序并且喜欢它。一些特点是:

  • 免费的基本版本或非常便宜(30 美元)的“企业”
  • 能够让 Windows 任务管理器列出您的应用程序的名称,而不是默认的 java.exe
  • 额外的混淆
  • 运行时检查是否安装了 java

2)您可以使用proguard或其他混淆器使逆向工程变得更加困难

3) nsis是一种非常强大的免费脚本语言,用于创建 Windows 安装程序。站点 wiki 上的良好文档以及对堆栈溢出的支持。

于 2010-10-28T19:13:47.450 回答
2

Launch4j为我工作,而一些工具没有工作。这里也有一个很好的指南。

希望这有帮助!

于 2016-01-21T03:49:02.990 回答
0

我们使用 7zip SFX 安装启动器。这是一个开源的简单工具。它将打包您的 jar,一个 jre 版本,因此安装系统不必安装 jre 和 7zip 的自解压版本。这是一个解释如何捆绑和 GitHub链接的教程 该项目没有维护但可以完美运行(测试到 Java 1.8)

于 2018-06-21T13:16:34.063 回答
0

1)要创建exe,可以使用Launch4j

2)正如我所见,您无法加密 jar 内容。不过我不确定。

3) 要创建安装程序,您可以使用刚刚创建的exe并使用InnoSetup创建文件。您必须将jre嵌入到安装程序以及运行时可能需要的任何其他库额外文件中。嵌入 jre 时,设置会变大,如果您想避免这种情况,您可以要求客户端在机器中安装 java。这样,您就不需要随 jre 一起发布了。

于 2020-03-23T14:24:34.813 回答