2014-02-05 91 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 –