【问题标题】:getting null pointer execption when using "ToolProvider.getSystemJavaCompiler()" below is my code使用下面的“ToolProvider.getSystemJavaCompiler()”时出现空指针异常是我的代码
【发布时间】:2017-06-09 01:44:48
【问题描述】:

这是我的代码,我在JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); 行得到空指针异常,根据stackoverflow 上的给定示例,有人说要明确设置“java.home”,但是我遇到了同样的问题。

File dir = new File("d://Hello.java");

File[] javaFiles = dir.new FilenameFilter() {
    public boolean accept(File file, String name) {
        return name.endsWith(".java");
    }
});

String home= System.getProperty("java.home");

System.out.println(""+home.replace("\\jre",""));

System.setProperty("java.home", home);

JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();


DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(diagnostics, Locale.US,Charset.forName("UTF-8"));
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(javaFiles));
javaCompiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();

for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
    System.out.format("Error on line %d in %d%n", diagnostic.getLineNumber(), diagnostic.getSource().toString());
}        

fileManager.close();

【问题讨论】:

标签: java


【解决方案1】:

我想你可能会遇到this known problem。尝试使用 JRE 而不是 JDK。

如果您已经在使用 JRE,请尝试将 tools.jar 专门包含到您的库中。

正如 Jon Skeet 在answer中所说的那样@

【讨论】:

  • 我已经尝试过但一次又一次遇到同样的问题,已经在类路径中包含 tools.jar
  • 哦,好吧,对我来说似乎很狡猾的代码是在运行时设置系统属性System.setProperty("java.home", home),我从来没有这样做过,但为了不陷入我个人的轻信谬误,我建议您对该位进行彻底的测试。
  • 我没有在我的代码中使用 System.setProperty("java.home", home) 但我在 stackoverflow 上有一个示例来使用它,如果我删除它,问题仍然相同
  • @Pawan 我只是快速检查了一下,它可以工作。我的环境是:Java 6、Windows 10。您是在 Eclipse 还是其他 IDE 中运行?您还可以检查您的 IDE 的 JDK 是否指向正确的位置。
  • 我正在使用 jdk 7 并在 Netbeans 和 windows 7 中运行这个程序
【解决方案2】:

最后我得到了问题,这是因为 Tools.jar 的版本不同 我在类路径中使用了不同的 Tools.jar,因为我使用的是 JDK 1.7 但使用的是 Tools.jar 1.6 版本。 现在解决了!!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多