2012-03-08 58 views
2

我想從另一個類編譯一個類,但是我使用的每個方法都會拋出一個NullPointerException異常。JavaCompiler,StandardJavaFileManager引發NPE

下面的代碼:

File fRun = new File(fileToRun);  
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); 
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
// NPE IN NEXT LINE 
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); 
Iterable<? extends JavaFileObject> compUnits = fileManager.getJavaFileObjects(fRun); 
compiler.getTask(null, fileManager, null, null, null, compUnits).call();    
fileManager.close(); 

public static void main(String[] args) { 
    String fileToCompile = "test" + java.io.File.separator + "MyClass.java"; 
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
    // NPE IN NEXT LINE 
    int compilationResult = compiler.run(null, null, null, fileToCompile); 
    if (compilationResult == 0) { 
     System.out.println("Compilation is successful"); 
    } else { 
     System.out.println("Compilation Failed"); 
    } 
} 

http://www.javabeat.net/articles/73-the-java-60-compiler-api-1.html

我開始從Eclipse的程序。

Wheres the mistake?

回答

2

最有可能的getSystemJavaCompiler()返回null,因爲在您運行此平臺的平臺上沒有提供Java編譯器。你是用JDK還是用JRE運行你的程序?

+0

不能訪問源ATM,但我想我使用JRE 1.7運行它 – ctekk 2012-03-08 15:51:20