Java 编译器 API 不起作用我一直无法解析类 javax.tools.JavaCompilerTool 和其他类似的类

问题描述 投票:0回答:2

我读到Java 6有一个编译器API,它允许你从其他java代码编译java文件。 然而,每当我尝试导入任何此类类(例如 javax.tools.JavaCompilerTool)时,我都会得到一个

unable to resolve class javax.tools.JavaCompilerTool

我搜索了jdk1.6.0_26安装目录下的所有jar文件,没有发现javax.tools包中的任何jar文件中引用了JavaCompilerTool。

我的理解是这个功能是在 1.6 JDK 中的。 我正在使用 in 目录中的 java.exe 运行我的应用程序,而不是目录中的 \jre,但无论如何都不起作用。

我错过了什么?怎么找不到班级。

java java-compiler-api
2个回答
2
投票

您需要使用 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
投票

我在 JDK 6 rt.jar 中看到

javax.tools.JavaCompiler
。 也许你的类名不正确。

© www.soinside.com 2019 - 2024. All rights reserved.