【问题标题】:How can I create a completely portable exe from a Java project?如何从 Java 项目创建完全可移植的 exe?
【发布时间】:2021-05-07 20:00:23
【问题描述】:

我的目标只是将我的 Java 项目(JDK 11、Javafx、非模块化、在 Intellij 中使用 Gradle)打包成单个 exe 文件。用户无需安装程序,无需 JRE。有各种打包和 exe 创建工具,但我还没有找到一个按我想要的方式工作。

起初我尝试了 javapackager,但 Inno Setup 一直出错。然后我设法让 launch4j 工作,但我不久前发现其中没有嵌入式 JRE,所以它无法在没有 Java 的计算机上运行。我还研究了 jPackage,但据我所知,它只创建安装程序,而且我在设置它时也遇到了麻烦。我最终循环回到 javapackager 并建议使用 Inno Setup 5 而不是 6,这很有效,但结果是一个安装程序,似乎也没有选项(至少默认情况下)

我想要实现的目标是不可能的,即使在我看来它应该是这样吗?如果是这样,我能达到的最接近的可能是什么?最重要的是让用户不必担心安装 Java,其余的东西我可能可以使用

【问题讨论】:

    标签: java gradle package exe


    【解决方案1】:

    这对我有用: 首先,将您的项目提取到 .jar - 在 IntelliJ 中,您将使用 buildartifact。当你得到这个.jar-file 时,我可以推荐以下内容:

    1. folder,您可以在其中执行所有这些步骤,以确保一切都整洁整洁
    2. 找到您的project JRE
    3. 也许是您的.exe 的图标

    现在将 .exe 的图标以及 JRE 的 bin- 和 lib- 文件夹复制到另一个文件夹中,例如在文件夹(1)中称为“jre”。

    结构应如下所示: 文件夹->{icon.ico, jre ->{bin, lib}, yourProjectJar.jar}

    完成后,下载launch4j 并运行它。在那里(在 Basic 下),必须选择带有 .exe-extension 的输出文件,并选择放置项目 jre 的 bin- 和 lib-文件夹的文件夹。 非强制性是为您的.exe 选择一个图标 - 您也可以在基本选项卡下找到它。

    最后一个强制性步骤是转到 JRE-Tab 并插入绝对路径,例如名为“jre”的文件夹,其中项目 jre 的 bin- 和 lib- 文件夹用于“捆绑的 JRE 路径”。然后选择您的 Min JRE 版本(同样,在 JRE 选项卡中)并确保将右侧的下拉菜单设置为“仅使用私有 JDK 运行时”。

    最后,点击“Build Wrapper”(它是从左边看的第四个符号),在为你的 Manifest 选择一个位置后,你应该有它。

    你好,JC

    P.S.:这应该给你一个.exe 和你项目的JRE,因此可以在任何系统上运行。恭喜!与其他一些语言相比,您只是利用了 Java 的优势。

    【讨论】:

    • JRE 不是特定于平台和操作系统吗?
    • "JVM 有两个主要功能:允许 Java 程序在任何设备或操作系统上运行(称为“一次编写,随处运行”原则),以及管理和优化程序内存。 " ~google.com/…
    • 是的,但适用于 Windows 的 JVM 与适用于 Mac 的 JVM 或适用于 Linux 的 JVM 是不同的编译程序。所有这三个 JVM 都应该运行相同的程序,但它们是为自己的操作系统编译和链接的。
    • 这并没有真正达到我想要的效果。我想这是一个足够接近的解决方法,但我想要的是将 JRE 放在 exe 中,所以结果是一个单一的 exe 文件,而不是一个 exe 和一个单独的 JRE 文件夹。我暂时将其保留在此,但稍后我将不得不弄清楚如何或是否可以将捆绑的 JRE 限制为仅必要的部分并使用 exe 自动压缩 jre 文件夹
    • 当您选择使用您在launch4j的JRE-Tab中您的jre的binlib文件夹中的文件夹并确保选中“仅使用私有JDK运行时” ,一切都将在一个.exefile 中。如果这不起作用,我可以建议你犯一个小错误吗?如果您仍然想成功,请告诉我您在文件夹和.exe 中放入的确切内容。它为我工作了无数次,这就是我现在有点困惑的原因之一,但我们会找到办法的。问候,朱利叶斯
    猜你喜欢
    • 2021-09-24
    • 2011-01-19
    • 2011-03-14
    • 1970-01-01
    • 2014-03-19
    • 2011-07-14
    • 2017-01-08
    • 2013-12-29
    相关资源
    最近更新 更多