2010-07-30 125 views
20

如問及回答here,python有沒有安裝程序的有用的部署方式。 Java可以做同樣的事情嗎?在沒有安裝jre的情況下運行java?

  • 有沒有辦法在不安裝jre的情況下運行Java的jar文件?
  • 有沒有類似java2exe(win32),java2bin(linux)或java2app(mac)的工具?
+0

相似的主題:http://stackoverflow.com/questions/664858/how-can-you-package-an-executable-jar-with-a-portable-jre – h3xStream 2010-07-30 13:15:04

回答

14

您可以使用Launch4j。有據可查,且易於使用。儘管生成的程序仍然需要運行JRE,但您不必在目標系統上安裝JRE。你可以把它複製到你的應用程序中,然後告訴Launch4j找到它,或者把它與其他所有東西包裝起來。

+1

JRE文件在哪裏?使用Mac,我找到了/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/*,並用PC發現了Java/jre6/lib。我必須複製所有這些文件嗎? – prosseek 2010-07-30 13:30:16

+1

您需要複製保留子目錄結構的兩個子目錄jre6/lib和jre6/bin。並告訴Launch4j在哪裏可以找到它,最好作爲可執行文件目錄的相對路徑。就我個人而言,我把bin和lib dirs放在我的可執行文件旁邊的一個名爲jre的子目錄中。 – haffax 2010-07-30 13:52:59

-2

你可能會得到一些運氣GCJ - 沒有嘗試過自己。

+1

這將永遠不會工作。 – TheLQ 2010-07-31 01:11:48

0

您可以將JRE嵌入您的應用程序中,併爲您的應用程序創建設置或安裝。

+7

「爲什麼這個簡單的計算器應用程序是26 MB?」 – TheLQ 2010-07-31 01:15:19

+1

此外,如果我發現某個程序未經我的同意在我的系統上祕密安裝了像Java這樣的安全威脅,我會非常生氣 – 2012-11-14 22:15:01

0

您可能想了解Eclipse如何執行它 - 它具有可以使用本地(對於安裝)JRE的本機.exe。

4

要創建本機可執行文件,您可以使用Excelsion Jet,它將Java編譯爲本機代碼。我們將它用於工作中的項目,並且我們不得不對原始源代碼(針對Sun的JDK)進行零修改。

+1

常見問題解答:Excelsior JET不僅僅是Windows EXE/Linux二進制文件的Java應用程序包裝器。它確實將您的Java類文件編譯爲本機x86(IA-32)指令。生成的可執行文件需要運行Excelsior JET Runtime,但不能運行Sun JRE。 – TheLQ 2010-07-31 01:14:33

+0

「生成的可執行文件需要Excelsior JET運行時才能運行」。 這是真的,但也可以將此運行時嵌入到生成的二進制文件中。二進制是自給自足的。在這個過程中,我相信可以剝離運行時以僅保留編譯應用程序中使用的部分。 – barjak 2010-08-02 11:36:41

相關問題