在Windows可执行文件中embeddedJRE?

假设我想分发一个Java应用程序。

假设我想把它作为一个单独的可执行文件来分发。 我可以很容易地将应用程序及其所有外部依赖项都构build成一个.jar文件(带有一些ant黑客攻击)。

现在假设我想将它作为Windows上的.exe文件分发。 这很容易,给出了漂亮的工具(如Launch4j等)。

但是现在假设我也不想依赖于安装了正确的JRE(或任何JRE)的最终用户。 我想分发一个JRE与我的应用程序,我的应用程序应该运行在这个JRE上。 创build一个Windows安装程序可执行文件非常简单,并在其中embedded了一个包含所有必需JRE文件的文件夹。 但是,我分发安装程序,而不是一个单一的文件的应用程序。

有没有办法将应用程序 JREembedded作为应用程序启动器的.exe文件(而不是作为安装程序)?

尝试使用Avian和ProGuard工具箱。 Avian允许在您的应用程序中embedded轻量级的虚拟机。 支持Linux,MacOS,Windows和iOS。 ProGuard允许您缩小大型jar文件以准备embedded。

有一个新的工具:Packr
https://github.com/libgdx/packr

相当多的select,商业上这是非常好的:

http://www.excelsior-usa.com/jet.html

有两个关键的开源选项GCJ和VMKit

http://gcc.gnu.org/java/和http://vmkit.llvm.org/

其他更长的path将包括IKVM.NET:

http://www.ikvm.net/

这是一个可以静态编译为EXE的.NET JVM

有没有办法将应用程序和JREembedded作为应用程序启动器的.exe文件(而不是作为安装程序)?

如果一个商业工具适合您, install4j可以非常顺利地解决这个问题(请参阅其“特性”页面 )。 它可以生成应用程序启动器和安装程序。

我不想重复自己太多,所以检查,例如我插入它的早期答案 (作为安装程序生成器,但它没有太大的区别)。

总结/底线:install4j可以创build绝对依赖于预先安装的JRE(或任何其他特定的库)的本地.exe启动器,它提供了捆绑(和检测)JRE的灵活选项。

Netbeans允许将Java SE项目打包在本地应用程序安装程序中,embeddedJRE。 在这里: https : //netbeans.org/kb/docs/java/native_pkg.html 🙂

另一个例子… 捆绑Java(JRE)和启动Java应用程序与7zip SFX! …(将Java应用程序转换为可执行文件,有点)

我知道我对这个派对有点晚了,但是看起来像ej-technologies(爱他们的东西)有一个叫做exe4j的新解决scheme,它将完全按照OP的要求进行,而不需要任何有趣的业务。

http://www.ej-technologies.com/products/exe4j/overview.html

如果您在OpenSource项目中工作,他们提供免费的许可证(您只需联系他们)。 如果这是一个商业项目,那么就需要一个许可证……但是在$ 69美元的许可证下,这是麻烦的,而且值得一试。

从他们的网站:

 If you want your own process name instead of java.exe in the task manager and a user friendly task-bar grouping, exe4j does the job for you. exe4j helps you with starting your Java applications in a safe way, displaying native splash screens, detecting or distributing suitable JREs and JDKs, startup error handling and much more. 

JSmooth可以根据文档来做到这一点。 我只尝试过没有embedded式JRE,但是非常满意。 这是ant脚本,我们build立在Linux上。

http://jsmooth.sourceforge.net/features.php

你可以看看: http : //ulibgcj.sourceforge.net/uswt.html它有微型swt库,可以很容易地使用SWT构buildGUI,并看看Eclipse GCJ Builder

Install4j是一个很好的工具,这个扭曲的目的。也可以检查出JSmooth或launch4j-所有虽然我试图捆绑JSRUS JRE和无法..

我发现Engmark Projector x86 / x64比BoxedApp Packer更好

如果你通过packr软件miminizejre比复制你的应用程序myapp.jar到启动\ jre \ bin \

并从已安装的jre例如C:\ Program Files \ Files \ Java \ 1.8.0_xxx \ bin \ javaw.exe复制到启动程序\ jre \ bin \

打开Engima Protectorinput – > javaw.exe from launcher \ jre \ bin \

如果你想高压缩,并select其他选项 – >命令行“-jar myapp.jar”

并点击保护,等待整个DLL和jar进入exe

确保你的myapp.jar应该由Eclipse生成,将“将所需的库包装到生成的JAR中”,因为如果你导入了许多库例如lwjgl或者JavaFX,而不必担心embedded的javaw_protected.exe是否包含了重要的文件示例资源。

但是BoxedApp Packer也是一样BoxedApp Packer比Engima Protector稍大一点。 保护程序几乎是最好的将资源/资源embedded到javaw.exe中。 比他们不能破解jar文件…我希望你很高兴自己的jar进入exe文件作为更less的4毫米没有lib目录 – 如果你有jvm.cfg错误信息的问题这意味着你不要复制embedded式exe到根jre或jdk的目录

请确保embedded式exe文件在jre或jdk根目录之外。

我希望你没有问题,如果你使用Protector x86比它需要使用i586,x64保护x64

如果你使用保护X64与X86 / I386 – 没关系没问题。 它工作正常。

最好的祝福

//编辑:

更新的新版本EXCELSIOR JET +虚拟框或保护程序几乎是最好的“embedded式应用程序”

请检查YouTube: https : //www.youtube.com/watch?v = ctbIxq- 1MGE