如何在动态编译源文件时为JavaCompiler提供接口?

bri*_*ice 8 java runtime compilation dynamic classloader

我正在尝试在运行时编译和加载一个类,而不知道该类的包.我知道该类应该遵守一个接口,以及源的位置(以及类名).我正在尝试以下方法:

/* 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());
Run Code Online (Sandbox Code Playgroud)

Test.java文件看起来像什么

import foo.Itest;
public class Test implements Itest{
...
}
Run Code Online (Sandbox Code Playgroud)

cannot find symbol symbol : class Itest从编译器得到一个错误.如何为编译器提供接口(已经加载)以避免此错误?

[EDIT - RESOLVED]:错误来自接口的事实ITest,而源是指Itest接口.

aio*_*obe 1

不确定这是否是您正在寻找的,但是,正如 @Phil此处提到的,您可以尝试在方法中传递类路径参数compiler.run