[英]How can I create a Windows .exe (standalone executable) using Java/Eclipse?
我是编程领域的新手。 与 C++ 一起工作了大约 5 个月,并决定开始进入 Java。我使用 Eclipse 作为我的 IDE,显然 Java 用于语言。 我正在尝试编写一个简单的 HelloWorld 应用程序,它可以通过命令提示符可执行文件运行。
在 Visual Studio 中,创建可执行文件似乎相当容易。 我所要做的就是使用下拉箭头并选择发布,然后运行我的构建。 希望能够在命令提示符下编写/运行 Java 的目的是让我能够在 go 之前完全使用 Swing 练习一些语言基础知识。
所以归根结底,创建用 Java 编写的命令提示符.exe 的最简单方法是什么?
提前致谢!
Java本身不允许构建exe ,这会破坏其跨平台的目的。
AFAIK,这些是您的选择:
制作一个可运行的JAR 。 如果系统支持并且配置正确,则在GUI中双击JAR将启动应用程序。 另一种选择是编写一个启动程序shell脚本/批处理文件,它将使用适当的参数启动您的JAR
还有可执行包装器 - 请参阅如何将我的Java程序转换为.exe文件?
典型的Java程序编译成.jar文件,如果目标机器安装了Java并且Java在其PATH中,则可以像.exe文件一样执行。 从Eclipse中,您可以使用“文件”菜单中的“导出”菜单项。
使用jpackage
创建本机安装程序
java 名为jpackage
的打包工具作为 Java 开发工具包 (JDK) 版本 16 的一部分发布。
该工具与各种平台的本机打包工具(例如WIX用于 Windows, RPM和DEB用于 Linux 发行版, DMG用于 Mac)结合使用,允许为 Java 应用程序构建本机安装程序,然后可以作为可执行文件运行。 对于分发,可能只分发应用程序的可执行文件,独立于安装程序(我不知道,我没试过)。
一篇不错的教程风格的博客文章描述了如何使用jpackage
工具为 Java 应用程序创建本机 Windows 安装程序:
使用jlink
和jdeps
自定义运行时映像
打包工具可以(可选)与jlink
工具结合使用:
jlink - 将一组模块及其依赖项组装并优化为自定义运行时映像
这允许您为您的应用程序自定义运行时映像,以仅包括您的应用程序代码、java 运行时和第三方库所需的自定义选定模块化部分,而不是分发完整的 java 运行时。
或者,您也可以使用jdeps
工具来确定jlink
的输入。
关于jdeps
+ jlink
+ jpackage
+ 本地包创建器(例如 wix/rpm/deb/dmg)用法的完整讨论不在 scope 的 StackOverflow 答案中,但如果您搜索,可以在 web 上找到各种资源。
创建独立的.exe
而不是安装程序
这可以使用warp-packer从jlink
创建的图像和应用程序启动器中创建一个 exe 来完成。
第三方工具可以帮助提供解决方案
如果您希望结合使用所有这些工具,事情会变得复杂,我建议您使用第 3 方实用程序或模板来帮助执行此任务。 例如:
jpackage
工具创建应用程序安装程序。”对于 JavaFX 特定应用程序(因为您的问题有 JavaFX 标签),您可以查看:
对于本机移动部署,请参阅 Gluon Mobile
这个问题是 Windows 具体的,但为了完整起见,如果您的目标是在移动设备上部署本机应用程序,那么您可能需要使用第三方解决方案,例如Gluon Mobile 。
背景原理(不需要的请忽略)
使用jpackage
创建本机安装程序可能需要一些工作,那么您为什么要这样做呢?
以下是一些原因:
jpackage
创建的安装程序分发时,该应用程序可以安装在目标系统上,而无需用户手动安装其他依赖项(例如 Java 运行时)。 安装程序将负责确保安装您的应用程序及其所需的任何依赖项。 是的,Java 在大多数情况下是跨平台的,但许多用户对此并不关心,相反,他们只是希望他们的应用程序有一个流畅和熟悉的安装(和卸载)体验,而jpackage
可以帮助实现这一点。
创建.exe发行版对于Java来说并不常见。 虽然这样的包装器确实存在,但正常的操作模式是创建.jar文件。
要从Eclipse中的Java项目创建.jar文件,请使用file-> export-> java-> Jar文件。 这将创建包含所有类的存档。
在命令提示符下,使用如下调用:
java -cp myapp.jar foo.bar.MyMainClass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.