2016-01-13 117 views
2

我有一个Java程序,它被转换成可执行的jar。在没有Java的Linux机器上可以运行jar吗?即一台没有Java的机器。在Linux环境下运行没有JVM的Java

+3

您可能想考虑将JVM与JAR捆绑在一起。它大约有80MB,但有很多工具可以让它变得非常简单。 –

+1

why.do.you.put.periods无处不在? –

回答

1

试试这个编译器。 https://en.wikipedia.org/wiki/GNU_Compiler_for_Java

的GNU Java编译器(GCJ)是Java编程语言的免费编译器和GNU编译器集

+1

在这之前,请参阅[是GNU的Java编译器GCJ死了吗?](http://stackoverflow.com/questions/4035538​​/is-gnus-java-compiler-gcj-dead/4040404#4040404)另外[GCJ新闻页面](http://gcc.gnu.org/java/),它自2009年以来一直未更新。 – EJP

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。

+0

GCJ远远低于1.5级。 1.3的主要部分不完整,同上1.3和1.4。 – EJP

+0

@EJP:现在好点? ;-) – Marged

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编译器,如怡东喷气:http://www.excelsiorjet.com/

+0

我认为自包含的软件包是最好的选择:标准,没有成本,并且完成这项工作。另外,您不需要源代码,它可以在JAR上工作 – Marged

+0

'javapackager'在Java 7中可用,但它被称为'javafxpackager'。 –

+0

下面是一个'javapackager'的例子:http://stackoverflow.com/a/34253042/597657 –

相关问题