The Java Compiler API does not work I keep getting unable to resolve class javax.tools.JavaCompilerTool and other similar ones

倾然丶 夕夏残阳落幕 提交于 2019-12-25 01:17:40

问题


I have read that Java 6 has a compiler api which allows you to compile java files from other java code. However whenever I try to import any such class (eg javax.tools.JavaCompilerTool), I get a

unable to resolve class javax.tools.JavaCompilerTool

I searched in all the jar files in the jdk1.6.0_26 installation directory and found no reference to JavaCompilerTool in any jar file in the package javax.tools.

My understanding is that this functionality is in the 1.6 JDK. I am running my application with the java.exe from the \bin directory and not the \jre\bin directory but regardless neither work.

What am I missing? How can the class not be found.


回答1:


You need to use the javax.tools.JavaCompiler class. Take a look at the javadocs for usage.

Example:

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();



回答2:


I see javax.tools.JavaCompiler in my JDK 6 rt.jar. Perhaps you have the incorrect class name.



来源:https://stackoverflow.com/questions/6930255/the-java-compiler-api-does-not-work-i-keep-getting-unable-to-resolve-class-javax

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!