2016-01-13 57 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 –

相關問題