我有一个Java程序,它被转换为可执行jar。是否可以在没有Java的Linux机器上运行jar?即没有Java的机器。
答案 0 :(得分:4)
在Java 8中,您可以为Windows / Linux / Mac创建所谓的“自包含软件包”,实际上是与JRE捆绑在一起的Java应用程序。
未来阅读:
https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/self-contained-packaging.html
https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/packager.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javapackager.html
此外值得一提的是(AOT)Java编译器,如Excelsior Jet:http://www.excelsiorjet.com/
答案 1 :(得分:1)
试试这个编译器。 https://en.wikipedia.org/wiki/GNU_Compiler_for_Java
GNU Compiler for Java(GCJ)是Java编程语言的免费编译器,也是GNU编译器集合的一部分
答案 2 :(得分:0)
如果您的应用程序未使用最新的Java语言标准,则可以使用gcj创建二进制文件。 但是请考虑gcj是一个相当古老的产品,多年来一直没有更新。缺乏对较新Java版本的支持,project page表示:
...已与GNU Classpath合并,并支持1.4的大部分内容 图书馆加上1.5加法。
由gcj创建的代码可能比在Hotspot Jvm下运行的代码慢得多,并且在静态编译时会创建相当大的二进制文件。
另一种选择是将Jre和jar捆绑成可执行文件。这个任务有几个程序,launch4j(http://launch4j.sourceforge.net)就是其中之一。
您也可以自己提供Java,因为它不需要安装,可以放在与jar相同的目录中。如果您使用Oracles JRE,请检查Eula是否允许以这种方式捆绑它。如果没有,你可以使用OpenJdk。