2014-02-05 220 views
1

在Java中,可以在運行時從包含在字符串中的源代碼編譯和加載類(例如,使用javax.tools.JavaCompiler,EclipseCompilerJanino)。這個過程可以完全在內存中,不需要編寫任何臨時文件。是否可以從Xtend字符串動態生成Java代碼字符串?

Xtend語言的工作原理是將Xtend源代碼轉換爲Java源代碼並編譯。 (糾正我,如果我錯了。)是否有可能將包含Xtend源代碼的字符串轉換爲包含Java源代碼的字符串,以便我可以使用我最喜歡的動態編譯器?我想在運行時*將Xtend源代碼轉換爲可加載的類。如果可能的話,你需要調用哪些函數/類來做到這一點?

* Runtime = no Eclipse-IDE,沒有JDK(僅限JRE),僅使用Xtend dependencies

回答

1

Xtend有一個Maven插件。它利用XtendBatchCompiler。它應該可以從純Java,ANT等來調用它。

+0

是的,我知道(謝謝,雖然)。我希望有人能更詳細地告訴我---這個API通過變異狀態來工作(例如,「編譯」函數返回一個布爾代碼,而不是編譯代碼),所以函數必須以某種順序調用,而不是其他函數訂購。另外,Maven插件的默認模式會生成文件,我希望將其全部存儲在內存中(對於某些環境(例如Google App Engine)是必需的)。 –

+0

我以爲你可以使用文件系統作爲臨時存儲來讀寫 使用看看org.eclipse.xtend.core.compiler.batch.Main.main(String []) –

+0

也許您可以利用Xtends自己的測試中的XtendCompilerTest –