【发布时间】:2011-03-27 17:12:19
【问题描述】:
我试图在运行时编译和加载一个类,但不知道该类的包。我确实知道该类应该符合接口,以及源的位置(以及类名)。我正在尝试以下方法:
/* Compiling source */
File root = new File("scripts");
File sourceFile = new File(root, "Test.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());
Test.java 文件的样子
import foo.Itest;
public class Test implements Itest{
...
}
我从编译器收到cannot find symbol symbol : class Itest 错误。如何为编译器提供接口(已加载)以避免此错误?
[编辑 - 已解决]:错误来自接口是ITest 并且源引用了Itest 接口这一事实。
【问题讨论】:
-
妈的错字!加载的接口是
ITest,不是Itest。 -
如果版主看到这篇文章并认为它应该被删除,我很高兴。
-
可能相关,主要是相同的目标。 4 年 有点相反。我会将另一个标记为可能的重复项。
标签: java dynamic runtime compilation classloader