我正在使用编译器API (javax.tools. javaccompiler)的工具来动态生成Java字节码。我构建源代码并使用API来编译它,然后通过反射使用它。
只要我只尝试生成的非公共类,这是非常好的。如果我这样做,我得到一个"类MyClass是公共的,应该在一个名为MyClass. Java的文件中声明",这是完全正常的,它不是从Java文件编译的。
我正在寻找一种方法来绕过此错误,没有在Java选项中找到任何,也没有在API中。
查看本文:从字符串
创建类对我来说,使用"string:///"解决这个问题。
就像这里描述的那样http://www.javablogging.com/dynamic-in-memory-compilation/