我读到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,但无论如何都不起作用。
我错过了什么?怎么找不到班级。
您需要使用 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();
我在 JDK 6 rt.jar 中看到
javax.tools.JavaCompiler
。 也许你的类名不正确。