我正在使用编译器API(javax.tools.JavaCompiler)中的工具来动态生成Java字节码。我构建源代码并使用API编译它,然后通过反射使用它。
只要我只尝试生成非公开课,那就完全没问题了。如果我这样做,我得到一个“类MyClass是公共的,应该在一个名为MyClass.java的文件中声明”,这是完全正常的,它不是从Java文件编译的。
我正在寻找绕过此错误的方法,在Java选项和API中都没有找到。
答案 0 :(得分:1)
查看此文章:Create class from string
对我来说,使用“string:///”解决此问题。
这里描述http://www.javablogging.com/dynamic-in-memory-compilation/