2016-10-23 42 views
1

我有一個我很困惑的問題。java - 在沒有JDK的客戶端編譯代碼

我知道的差異Ĵ AVA ř不定時Ë nviroment和Ĵ AVA d evelopement ķ它之間。

我正在編寫一個程序,它使用ToolProvider.getSystemJavaCompiler()方法從代碼中編譯java代碼。

現在,我已經回答說,如果我的客戶端沒有安裝JDK,我無法從客戶端編譯代碼。我的主要問題是,怎麼辦?我不希望我的客戶不得不在他們的計算機上安裝JDK來運行我的程序。

在此先感謝!

+0

在僅使用JRE的虛擬機中運行操作系統並嘗試運行已編譯的程序 – gkiko

+1

如果您知道差異,那麼您認爲JRE不足以滿足用戶的需求? –

+0

爲什麼您認爲您可以在沒有JDK的情況下在用戶計算機上編譯代碼? – SLaks

回答

0

您需要在您的系統上編譯它,並將相應的java源文件的類文件分發給任何人。

該類文件不需要JDK,但必須在該系統上安裝JRE才能運行該類文件。

+1

不適用於'getSystemJavaCompiler'。閱讀問題。 – SLaks

+0

看看編輯... – NonameSL

+0

是的,早些時候它是不同的。 :) 雖然,簡單地說,除非您有javac,即JDK附帶的代碼,否則您無法編譯代碼。 希望它解決您的查詢。 –

0

如果你想編譯代碼,你需要一個編譯器,所以如果用戶不能期望擁有你需要的編譯器,你只需要捆綁它。

我真的不能說,我知道如何捆綁標準javac編譯器,雖然它可能可能,嚴格來說,找到包含它的JAR文件包,以你的代碼一起。但不知道這種解決方案有多強大。

但根據您的需要,您可能不需要標準javac。這裏有大量的字節碼生成庫,具有或多或少的高級功能。我真的不想推薦任何我沒有親身體驗的東西,但例子包括Byte BuddyASM。您也可以使用ABCL