【问题标题】:How can I convert a .jar to an .exe?如何将 .jar 转换为 .exe?
【发布时间】:2010-12-02 01:47:42
【问题描述】:

我想将 .jar 转换为 Microsoft 的 .exe。有没有这个的程序转换器?

另外,如果有适用于 Mac 和 Linux 的版本,我也将不胜感激。

【问题讨论】:

  • @Steve 这就是关于如何使用 GCJ(顺便说一句,这很糟糕),而不是可用选项。重复错误
  • 答案中有一个有趣的链接,其中包含有关该主题的讨论,包括此处答案中提到的软件。
  • 我希望我能给 TheLQ 声誉,因为它说 GCJ 很糟糕。
  • 类似于question。试试 jpackage,它现在是 JDK 的一部分。

标签: java windows exe


【解决方案1】:

Launch4j 适用于 Windows 和 Linux/Mac。但是,如果您运行的是 Linux/Mac,有一种方法可以将您的 jar 嵌入到为您执行自动启动的 shell 脚本中,因此您只有一个可运行文件:

exestub.sh:

#!/bin/sh
MYSELF=`which "$0" 2>/dev/null`
[ $? -gt  0 -a -f "$0" ] && MYSELF="./$0"
JAVA_OPT=""
PROG_OPT=""
# Parse options to determine which ones are for Java and which ones are for the Program
while [ $# -gt 0 ] ; do
    case $1 in
        -Xm*) JAVA_OPT="$JAVA_OPT $1" ;;
        -D*)  JAVA_OPT="$JAVA_OPT $1" ;;
        *)    PROG_OPT="$PROG_OPT $1" ;;
    esac
    shift
done
exec java $JAVA_OPT -jar $MYSELF $PROG_OPT

然后你从你的 jar 中创建你的可运行文件:

$ cat exestub.sh myrunnablejar.jar > myrunnable
$ chmod +x myrunnable

它的工作方式与launch4j 的工作方式相同:因为一个jar 有一个zip format,其标头位于文件的end。你可以有任何你想要的头文件(二进制可执行文件或者像这里的shell脚本)并运行java -jar <myexe>,因为<myexe>是一个有效的zip/jar文件。

【讨论】:

    【解决方案2】:

    JSmooth .exe 包装器

    JSmooth 是一个 Java 可执行包装器。它为您的 Java 应用程序创建本机 Windows 启动器(标准 .exe)。它使 Java 部署更加顺畅和用户友好,因为它能够自行找到任何已安装的 Java VM。当没有可用的 VM 时,包装器可以自动下载并安装合适的 JVM,或者只是显示一条消息或将用户重定向到一个网站。

    JSmooth 为您的 java 应用程序提供了多种包装器,每个包装器都有自己的行为:选择您的风格!

    下载:http://jsmooth.sourceforge.net/

    JarToExe 1.8 Jar2Exe 是一个将 jar 文件转换为 exe 文件的工具。 以下是他们网站上描述的主要功能:

    可以生成“Console”、“Windows GUI”、“Windows Service”三种类型的.exe文件。

    生成的 .exe 文件可以添加程序图标和版本信息。 生成的.exe文件可以对java程序进行加密保护,程序运行时不会生成临时文件。

    生成的 .exe 文件提供系统托盘图标支持。 生成的 .exe 文件提供记录系统事件日志支持。 生成的windows服务.exe文件可以自行安装/卸载,支持服务暂停/继续。

    执行者

    将您的 Java 应用程序打包为 jar,Executor 会将 jar 转换为 Windows .exe 文件,与本机应用程序没有区别。只需双击 .exe 文件即可调用 Java 运行时环境并启动您的应用程序。

    【讨论】:

    • 你有 Executor 的链接吗? Google 正在返回不相关的内容。
    【解决方案3】:

    如果您的程序是"publicly available non-commercial in nature" and has "a publicly available Web site that meets the basic quality standards",那么您可以尝试获得 Excelsior 的免费许可证。如果不是,那么它很昂贵,但仍然是一个可行的选择。

    程序:https://www.excelsiorjet.com

    附带说明:这是对所有现有 Jar 到 EXE 程序的研究,这有点令人沮丧 - https://www.excelsior-usa.com/articles/java-to-exe.html

    【讨论】:

    • 更正:如果您的项目是非商业性的并向公众开放,您可以获得免费的 Excelsior JET 许可证。是否开源也没关系。
    • @Dmitry 啊,谢谢,我的习惯是开源 = 公开和免费。
    【解决方案4】:

    尽管这违反了关于这些问题的一般 SO 政策,但这似乎是 OP 真正想要的:

    http://www.google.com/search?btnG=1&pws=0&q=java+executable+wrapper

    如果您愿意,也可以尝试创建包含单行的适当批处理或脚本文件:

    java -jar MyJar.jar
    

    或者在许多情况下,在 Windows 上只需双击可执行 jar。

    【讨论】:

    • 只是为了解释为什么我发布了一个谷歌链接,在@David 的编辑之前,OPs 原始问题明确指出“请不要发布告诉我这是愚蠢的或问我为什么,给我一些链接。”
    • 之前也讨论过stackoverflow,这里:stackoverflow.com/questions/3754553/jar-hidden-inside-exe
    • 您不能将应用程序特定图标添加到 .bat 文件中,除非您使用“开始”,否则 windows cmd 将保持打开/可见状态。
    【解决方案5】:

    我使用了 Launch4J,它运行良好,

    • 首先,转到您的 jdk 并复制 bin 和 lib 文件夹
    • 然后为您的应用创建一个文件夹,并创建一个名为 jre-(version) 的文件夹,
    • 然后将这些粘贴到里面
    • 然后打开launch4j把exe文件的路径(在app的文件夹里面)
    • 然后选择 jre 选项并在捆绑路径中输入 jre-(version)
    • 然后在 minimun version 中输入您编写的 Java 版本。
    • 然后在 jre 选项中输入“仅使用私有 jdk 运行时”
    • 然后点击齿轮图标。它将打开一个文件选择器。
    • 选择应用程序的文件夹,完成
    • 现在打开生成的 exe 文件。它应该可以工作。

    如果没有,请尝试试运行按钮(绿色播放按钮)。如果它在下面的控制台中显示 LinkageError,则在 jvm-options 中键入 --enable-preview。它应该工作。 我希望它有所帮助。

    【讨论】:

      【解决方案6】:

      对于 Windows,您可以使用以下方式将 jar 转换为 exe:

      1. 使用 Netbeans https://erainnovator.com/convert-jar-to-exe-file/
      2. 使用 Excelsior JET https://youtu.be/iQSfUb8chjg

      【讨论】:

      • 不要只发布链接。解释他们所说的基本内容。
      【解决方案7】:

      如果您需要从 java 14 将 .jar 转换为 .exe,您可以使用 jpackage

      jpackage 是一个命令行工具,用于创建本地安装程序和 Java 应用程序包。

      这个article 会帮助你

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • 我认为 jpackage 只是将您的 jar 打包到本机安装程序中(即 .msi.deb 等),但该程序仍需要使用 java -jar ... 运行。不过我还是要测试一下……
      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 2018-11-05
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      相关资源
      最近更新 更多