API Java Compiler: импорт пользовательского пакета не работает - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над веб-проектом, в котором я создаю собственный файл .java, загружаю его с помощью пользовательского ClassLoader, компилирую его с помощью API-интерфейса компилятора и затем выполняю его с помощью Reflection.Единственное, что не работает, это компилирует файл, который выглядит так:

package testfiles; 
import exceptions.IncorrectSolutionException; 
public class TestFile { 
  public static void testSolution() throws IncorrectSolutionException {
    //some code here
  }
}

Используя Диагностический сборщик API-интерфейса компилятора, я получаю следующее сообщение об ошибке:

package exceptions does not exist, line 2 cannot find symbol
symbol:   class IncorrectSolutionException

Пакет «исключения» и указанный класс определенно существуют, и моя папка src имеет такую ​​структуру: (также папка с файлами классов)

  • src
    • исключения
    • тестовые файлы

Я попытался установить путь к классу в соответствии с рекомендациями здесь , но это ничего не меняет.

Как мне скомпилировать файл:

DiagnosticCollector< JavaFileObject > diagnostics = new DiagnosticCollector<>();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
CompilationTask task = compiler.getTask(null, fileManager, diagnostics, optionList, null, files);
File file = new File(absolute path);
//I am using the absolute path here, because I had problems resolving the relative path as my working directory seems to be the folder eclipse is installed in.
Iterable<? extends JavaFileObject> files = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(file));
if(task.call()) {
    System.out.println("compiling File");
} else {
    //...handle Diagnostics
}

Нужно ли добавить еще один параметр в CompilationTask или проблема в другом месте?Заранее спасибо!

1 Ответ

0 голосов
/ 01 июня 2018

Очевидно, что он должен был что-то делать с рабочим каталогом, и папка Tomcat была запущена. Настройка пути к серверу в разделе «Расположение сервера» меня устроила (установив его в корневой каталог проекта в моей рабочей области).

...