Скомпилировать java файл в runtime, если у класса есть другие зависимости
Необходима реализация следующего функционала - пользователь пишет код на сайте, например метод или класс на java отправляет на проверку. Система проверяет код на компиляцию и проводит тестирование бизнес-логики метода (или класса). Я знаю, как реализовать компиляцию в runtime "простого" класса, например:
File classFile = new File("FirstTest.java");
Files.write(classFile.toPath(), source.getBytes(StandardCharsets.UTF_8));
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
OutputStream outputStreamErr = new ByteArrayOutputStream();
int compilingResult = compiler.run(null, null, outputStreamErr, classFile.getPath());
...
Но когда в компилируемом классе есть, какой-либо дополнительный импорт (даже просто коллекции, не говоря уже про JUnit), то при компилировании происходит ошибка. Какие есть варианты решить этот вопрос. Как можно добавить зависимости при динамической компиляции или есть вообще другие пути реализовать данный функционал?