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

标签 java compiler-construction compilation

我读到 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 中的。我正在使用\bin 目录中的 java.exe 运行我的应用程序,而不是\jre\bin 目录,但无论如何都不起作用。

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

最佳答案

您需要使用javax.tools.JavaCompiler类(class)。看看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();

关于java - Java 编译器 API 不起作用我一直无法解析类 javax.tools.JavaCompilerTool 和其他类似的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930255/

相关文章:

java - 为什么二叉堆是树结构?

java - 如何在 Struts2 拦截器中配置 HTTP 响应 header ?

gcc:对 _mcount 的 undefined reference (gprof 检测)

parsing - 标记化然后构建 AST 有什么好处吗?

java - 代码不可达、编译错误恶性循环

performance - ccache的缺点

java - 数组上的预增量如何工作

java - 我如何运行一个 pitest ant 脚本

c# - 当没有错误时,CSharpCodeProvider 不会返回编译器警告

c++ - 是否有用于将特定 IR 编译为体系结构特定代码的 LLVM 替代库?