JDK7中没有com.sun.tools.javac

JDK7中没有com.sun.tools.javac,java,jdk1.6,java-7,Java,Jdk1.6,Java 7,我在Windows7 64位中使用JDK7和EclipseIndiago。我将环境变量JAVA\u HOME设置为F:\JDK7,并在路径中添加%JAVA\u HOME%\bin。这是我的示例代码: com.sun.tools.javac.Main m1 = new com.sun.tools.javac.Main(); m1.compile(source); 我得到的错误是: 无法将com.sun.tools类型解析为 类型 为什么没有com.sun.tools?有什么问题吗 您最好使用,而

我在Windows7 64位中使用JDK7和EclipseIndiago。我将环境变量JAVA\u HOME设置为F:\JDK7,并在路径中添加%JAVA\u HOME%\bin。这是我的示例代码:

com.sun.tools.javac.Main m1 = new com.sun.tools.javac.Main();
m1.compile(source);
我得到的错误是:

无法将com.sun.tools类型解析为 类型

为什么没有com.sun.tools?有什么问题吗


您最好使用,而不是尝试直接调用tools.jar中的javac。如果您使用它,API将为您添加此功能。

看起来您正在使用Eclipse。默认情况下,Eclipse只导入JRE JAR,而不是来自JDK的JRE JAR

解决方案1:

  • 转到Eclipse首选项(在Windows上:窗口-->首选项)
  • 打开首选项Java-->已安装JRE
  • 选择您的JRE并按edit
  • 使用“addexternaljars”包含tools.jar(可在JDK_HOME/lib中找到)
  • 解决方案2:


    编辑项目构建路径并添加外部库:JDK_HOME/lib中的tools.jar位于JDK-bin目录中,但不在JRE-bin目录中

    我有一个类似的问题,结果是我错误地将JAVA_HOME变量设置为JRE而不是JDK,即

    C:\Program Files\Java\jre1.8.0_60 instead of 
    C:\Program Files\Java\jdk1.8.0_60
    

    因为我“知道”我复制了正确的目录名,所以我花了很长时间才看到这两个不同的字符并解决了这个问题。

    我将编译真正老式的代码。无论如何,你是对的。谢谢我按照你说的做了。还有一个错误:`Description Resource Path Location Type Access restriction:构造函数Main()无法访问,因为所需的库C:\Program Files\Java\jdk1.7.0\lib\tools.jar Compiler.Java/imageJ/source/ij/plugin line 58 Java Problem`有限制,请检查Eclipse中的编译器设置。您可能有一些规则规定应将受限API报告为错误(窗口-->首选项-->Java-->编译器-->错误/警告请参阅“弃用和受限API”部分)