【发布时间】:2011-08-03 17:01:02
【问题描述】:
我读到 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 目录而不是 \jre\bin 目录中的 java.exe 运行我的应用程序,但无论如何都不起作用。
我错过了什么?怎么找不到类。
【问题讨论】:
-
这是编译时错误还是运行时错误? (我不承认它是来自 Oracle 的编译时版本)。如果是运行时,你究竟是如何运行它的?作为 servletcontainer 上的 webapp 还是什么?如果是这样,您确定 servletcontainer 使用的是 JDK 的 JRE?
-
我从命令行运行它(Windows 7 64 位下的 .bat 文件)。该错误是运行时错误。我启动一个 java 应用程序,然后启动一个 GroovyScriptEngine,它运行一个 groovy 文件,然后尝试导入 JavaCompilerTool。我确定我使用的是 JDK 的 java.exe,但是如果从 groovy 脚本中打印 System.getProperty("java.home") 它指向
\jre\bin 目录。不过,我不确定这是否是可靠的检查。 -
如果我改为将导入放在主 java 文件中(甚至在 groovy 启动之前,我在导入 javax.tools.JavaCompilerTool; 时得到一个“找不到符号”。所以同样的问题
-
查看我对以下答案的回复。您确定该路径必须反映 jdk\bin 目录吗?它似乎在没有被反映的情况下工作,我确定我指向 jdk\bin\java.exe 文件,因为我正在从 .bat 文件运行
标签: java compiler-construction compilation