Предоставьте различные библиотеки Java для пути к классам javax.tools.JavaCompiler.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Предоставьте различные библиотеки Java для пути к классам javax.tools.JavaCompiler.

Сообщение Anonymous »

Я пытаюсь проанализировать этот код с помощью компилятора JDK17 javax.tools.JavaCompiler:

Код: Выделить всё

public class TestClass {
void foo() {
var x = java.nio.file.Path.of("SomePath").resolve("foo", "goo");
}
}
Я получаю такой экземпляр JavaCompiler:

Код: Выделить всё

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
var diagnostics = new DiagnosticCollector();
var fileManager = compiler.getStandardFileManager(diagnostics, null, StandardCharsets.UTF_8);
var javaFileObjects = fileManager.getJavaFileObjectsFromFiles(List.of(file));
JavacTask task = (JavacTask) compiler.getTask(null, fileManager, diagnostics, opts, null, javaFileObjects);
var cus = task.parse();
Теперь в JDK 17 нет сигнатуры методаsolve(String,String) для класса Path, и поэтому я получаю неизвестный тип var.
Если бы мне нужно было разрешить символы для некоторых аннотаций junit, например, я бы предоставил компилятору "-classpath", "path/to/junit/junit.jar"
code>, и символ будет решено. Но, например, в Java 23 у меня есть только библиотека /path/to/jdk23/lib/jrt-fs.jar, и передача ее в путь к классам не решает проблему.
Похоже, что при работе на Java 17 я могу полагаться только на символы классов JDK17.
Есть ли какой-нибудь способ предоставить этому Javaкомпилятору различные библиотеки Java?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -classpath
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»