Java Compiler API не работает, я продолжаю получать неспособность разрешить класс javax.tools.JavaCompilerTool и другие подобные - PullRequest
0 голосов
/ 03 августа 2011

Я читал, что в Java 6 есть API-интерфейс компилятора, который позволяет вам компилировать Java-файлы из другого Java-кода. Однако всякий раз, когда я пытаюсь импортировать любой такой класс (например, javax.tools.JavaCompilerTool), я получаю

unable to resolve class javax.tools.JavaCompilerTool

Я искал во всех файлах jar в каталоге установки jdk1.6.0_26 и не нашел ссылки на JavaCompilerTool в любом файле jar в пакете javax.tools.

Насколько я понимаю, эта функциональность есть в 1.6 JDK. Я запускаю свое приложение с файлом java.exe из каталога \ bin, а не из каталога \ jre \ bin, но независимо от того, что не работает.

Чего мне не хватает? Как класс не найти.

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Вам необходимо использовать класс javax.tools.JavaCompiler .Посмотрите на javadocs для использования.

Пример:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(new File("HelloWorld.java")));
compiler.getTask(null, fileManager, null, null, null, compilationUnits).call();
fileManager.close();
0 голосов
/ 03 августа 2011

Я вижу javax.tools.JavaCompiler в моем JDK 6 rt.jar. Возможно, у вас неправильное имя класса.

...