你知道用于将java项目编译成.exe的程序的jar我想知道这样的软件是如何工作的。
他们执行此操作的方法是什么?
他们是否将jar文件的字节码更改为exe文件?
答案 0 :(得分:1)
基本上可执行文件只是启动你的jar。它仍然是字节码,仍然可以在JVM中运行。
答案 1 :(得分:1)
至少有两种方法可以生成用户可以单击的.exe文件。
更简单的是包装所需的java环境,exe只作为标准VM的启动器。 JRE可以包含在包装的应用程序中,或者可以使用系统安装的JRE。 launch4j(http://launch4j.sourceforge.net/)是一个以这种方式工作的例子。
它还可以独立地在部署之前完成JIT(生成CPU可以执行的本机代码)的工作。有(是?)gcj(https://gcc.gnu.org/java/)并且至少有一种商业产品(Excelsior JET)提供此功能。
至于你的问题“如何”:包装不会改变代码,它只是提供了一个启动程序,它为运行java代码设置了必要的环境,使进程自动化到最终用户不需要的程度知道他们正在运行java代码。这可以与任何安装程序包结合使用,以提供免费的“点击安装”和“点击运行”用户体验(例如InnoSetup)。
对本机代码的编译与任何其他编译器基本相同,将输入语言转换为本机代码。由于许多javas功能是运行时动态的(例如,类加载,反射),这需要相当多的努力来翻译。
答案 2 :(得分:0)
这些msi和exe文件更像是zip文件,它提取jar文件及其依赖项并将它们放在适当的位置。然后,他们会添加快捷方式和指向启动程序所需文件的链接。
你可以在这里阅读。 http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm
以及更多。 http://wixtoolset.org/