Javac:忽略"应该在一个名为..."的文件中声明。

时间:2013-06-12 14:17:57

标签: api java javac java-compiler-api

我正在使用编译器API(javax.tools.JavaCompiler)中的工具来动态生成Java字节码。我构建源代码并使用API​​编译它,然后通过反射使用它。

只要我只尝试生成非公开课,那就完全没问题了。如果我这样做,我得到一个“类MyClass是公共的,应该在一个名为MyClass.java的文件中声明”,这是完全正常的,它不是从Java文件编译的。

我正在寻找绕过此错误的方法,在Java选项和API中都没有找到。

1 个答案:

答案 0 :(得分:1)

查看此文章:Create class from string

对我来说,使用“string:///”解决此问题。

这里描述http://www.javablogging.com/dynamic-in-memory-compilation/