[英]JavaCC: I wish to generate java classes from dynamically generated jj files and to compile them at runtime
我正在重构一个项目,该项目在编译期间使用javaCC创建专有语言解析器。 由于语言的不同变体可以同时存在,因此决定在运行时从jj文件动态生成java源代码,然后将java文件编译成类文件并加载它们。
为了更有效地这样做,我想在内存中生成java文件到我想的某些流。 JavaCC的API Javadoc不太容易访问:)。
如何最好地进步?
kdgregory建议你最好修改你的构建过程。 但是, 本文描述了如何创建一个新的类加载器,它使用编译器API动态编译Java代码。 修改它以从文件而不是字符串中读取应该相当容易。
您可以使用Compiler API aka JSR-199(请参阅javax.tools
)在内存生成的类中进行编译。 您需要扩展javax.tools.SimpleJavaFileObject
类以创建一个类,该类将表示RAM中Java类的源文本。
看看下面的例子 ,它有一个实际上正在执行的RAMResidentJavaFileObject
的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.