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