2012-02-26 67 views
0

我目前正在創建一個個人(也許是公共的)java終端。我想創建一個命令,用於在執行時創建+編譯Java文件,但我不太確定如何實際執行此操作。可能嗎?還是我只是在做夢?使用Java文件中的代碼編譯Java文件

+0

檢查Java腳本** javax.script **技術;例如:http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/ – ecle 2012-02-26 10:20:12

回答

0

我同意@ eee的評論,javax.script可能是一個非常適合您的項目,腳本代碼比Java代碼更容易處理。我已經成功地將它用於插件API,我不記得有任何問題可以啓動並運行它。

我在運行時編譯真實Java的大多數項目都使用Eclipse compiler來完成。 Java 6 javac也可以完全以編程方式訪問。我從來沒有使用過這些。如果需要,可以通過Commons-JCI訪問這兩個和其他一些編譯器。

+0

真的有必要了解這一切嗎?我現在沒有在尋找任何先進的東西,因爲我只是在學習它的基礎知識。一旦我擁有了所有的東西,我將升級所有的代碼,使其全部安全。 – 2012-02-26 11:14:04

+0

沒有必要去學習它的所有*,只是選擇一些東西,然後去做。如果你使用Java 7,那麼Andrew Thompson的答案可能就是要使用的東西。 – Barend 2012-02-27 20:52:31

1

您也可以使用Groovy - 如果您只是想在應用程序中編譯和運行一行或兩行Java代碼,那麼它非常方便。應用程序可以使用常規的Java,而Groovy僅用於編譯動態生成的代碼。無論您選擇哪種解決方案,請謹慎執行用戶輸入,因爲代碼可能導致安全問題(易受注入攻擊)。

+0

這是一個問題,因爲我想要一段代碼來編譯一個完整的Java文件。 – 2012-02-26 11:16:29

+0

在這種情況下,請查看Andrew Thompson的答案。您也可以嘗試直接使用[JavaCompiler類](http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html)。即使在某個臨時文件中調用javac可執行文件也是可行的,但它不像人們提出的其他解決方案那樣優雅或便攜。 – 2012-02-26 13:10:22

1

編譯Java文件

STBC。它使用JavaCompiler編譯文本區域中的代碼。