【问题标题】:How can I create a Windows .exe (standalone executable) using Java/Eclipse?如何使用 Java/Eclipse 创建 Windows .exe(独立可执行文件)?
【发布时间】:2011-04-19 16:09:58
【问题描述】:

我是编程界的新手。已经使用 C++ 大约 5 个月了,并决定我要开始进入 Java。我使用 Eclipse 作为我的 IDE,显然使用 Java 作为语言。我正在尝试编写一个简单的 HelloWorld 应用程序,它可以通过命令提示符可执行文件运行。

在 Visual Studio 中,创建可执行文件似乎相当容易。我所要做的就是使用下拉箭头并选择 Release,然后运行我的构建。希望能够在命令提示符下编写/运行 Java 的目的是让我能够在全面使用 Swing 之前练习一些语言基础知识。

那么底线,创建用 Java 编写的命令提示符 .exe 的最简单方法是什么?

提前致谢!

【问题讨论】:

标签: java eclipse exe


【解决方案1】:

Java 本身不允许构建 exe,这会破坏其跨平台的目的。

AFAIK,这些是您的选择:

  1. 创建一个runnable JAR。如果系统支持它并且配置正确,在 GUI 中,双击 JAR 将启动应用程序。另一种选择是编写一个启动器外壳脚本/批处理文件,它将使用适当的参数启动您的 JAR

  2. 还有可执行的包装器 - 请参阅 How can I convert my Java program to an .exe file?

另请参阅: Convert Java to EXE: Why, When, When Not and How

【讨论】:

    【解决方案2】:

    典型的 Java 程序编译成 .jar 文件,如果目标机器安装了 Java 并且 Java 在其 PATH 中,则可以像 .exe 文件一样执行这些文件。在 Eclipse 中,您可以使用 File 菜单中的 Export 菜单项。

    【讨论】:

      【解决方案3】:

      使用jpackage创建本机安装程序

      名为 jpackage 的 java packaging tool 已作为 Java 开发密钥 (JDK) 版本 16 的一部分发布。

      此工具与适用于各种平台的原生打包工具(例如,WIX 适用于 Windows,RPM 和 DEB 适用于 Linux 发行版,DMG 适用于 Mac)允许为 Java 应用程序构建本地安装程序然后可以作为可执行文件运行。对于分发,可能只分发应用程序的可执行文件,独立于安装程序(我不知道,我没有尝试过)。

      一篇很好的教程风格的博客文章描述了使用 jpackage 工具为 Java 应用程序创建本机 Windows 安装程序:

      使用jlink 和jdeps 自定义运行时映像

      打包工具可以(可选)与jlink工具结合使用:

      jlink - 将一组模块及其依赖项组装和优化到自定义运行时映像中

      这允许您自定义应用程序的运行时映像,以仅包含应用程序代码、java 运行时和第 3 方库的所需自定义选定模块化部分,而不是分发完整的 java 运行时。

      您还可以选择使用jdeps 工具来确定jlink 的输入。

      关于使用 jdeps + jlink + jpackage + 原生包创建者(例如 wix/rpm/deb/dmg)的完整讨论超出了 StackOverflow 答案的范围,但可以在以下位置找到各种资源如果您搜索,请访问网络。

      第三方工具可以帮助提供解决方案

      如果您希望结合使用所有这些工具,事情可能会变得复杂,我建议使用第 3 方实用程序或模板来帮助执行此任务。例如:

      • badass-jlink-plugin (documentation) -> “允许您轻松地为模块化应用程序创建自定义运行时映像。它还允许您使用 jpackage 工具创建应用程序安装程序。”

      对于 JavaFX 特定应用程序(因为您的问题带有 JavaFX 标记),您可以查看:

      • JPackageScriptFX -> “演示项目如何使用脚本通过 jdeps、jlink 和 jpackage 工具构建独立的、特定于平台的可执行文件和 JavaFX 应用程序的安装程序。”

      有关原生移动部署,请参阅 Gluon Mobile

      这个问题是针对 Windows 的,但为了完整起见,如果您的目标是在移动设备上部署本机应用程序,那么您可能需要使用第 3 方解决方案,例如 Gluon Mobile。


      背景原理(如果不需要,请忽略)

      使用jpackage 创建本机安装程序可能有点麻烦,那么您为什么要这样做呢?

      以下是一些原因:

      1. 当应用程序通过使用jpackage 创建的安装程序分发时,该应用程序可以安装在目标系统上,而无需用户手动安装其他依赖项(例如 Java 运行时)。安装程序将确保安装您的应用程序及其所需的任何依赖项。
      2. 该应用程序附带了自己定制的 Java 运行时版本。这意味着如果用户没有安装 JRE,并且如果他们安装了与您的应用程序不兼容的 JRE 版本,您的应用程序仍然可以正常运行。
      3. 可以使用目标平台的标准操作系统工具安装和卸载应用程序。这些平台的大多数用户都熟悉这些。

      是的,Java 在很大程度上是跨平台的,但许多用户并不关心这一点,他们只希望他们的应用程序有一个流畅和熟悉的安装(和卸载)体验,jpackage 可以帮助完成那个。

      【讨论】:

        【解决方案4】:

        创建 .exe 发行版对于 Java 来说并不常见。虽然确实存在这样的包装器,但正常的操作模式是创建一个 .jar 文件。

        要在 Eclipse 中从 Java 项目创建 .jar 文件,请使用 file->export->java->Jar 文件。这将创建一个包含所有课程的存档。

        在命令提示符下,使用如下调用:

        java -cp myapp.jar foo.bar.MyMainClass

        【讨论】:

        • 迟到的回复,但问题不是问这个问题,因为如果你想向你的朋友炫耀你的工作,他们无法打开你的 jar 文件
        猜你喜欢
        • 2012-06-26
        • 2012-03-31
        • 1970-01-01
        • 2014-04-11
        • 2015-12-20
        • 1970-01-01
        • 2017-04-17
        • 2010-09-16
        • 1970-01-01
        相关资源
        最近更新 更多