Я пытаюсь скомпилировать и загрузить класс во время выполнения, не зная пакета класса. Я знаю, что класс должен соответствовать интерфейсу и местоположению источника (и, следовательно, имени класса). Я пытаюсь следующее:
/* 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
интерфейс.