2

다른 클래스의 클래스를 컴파일하려고하지만 사용 된 모든 메소드가 NullPointerException을 던집니다. http://www.javabeat.net/articles/73-the-java-60-compiler-api-1.htmlJavaCompiler, 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"); 
    } 
} 

내가 이클립스에서 프로그램을 시작합니다

여기에 코드입니다.

왜곡합니까?

답변

2

대개 getSystemJavaCompiler()는 실행중인 플랫폼에 Java 컴파일러가 없기 때문에 null을 반환합니다. JDK 또는 JRE를 사용하여 프로그램을 실행하고 있습니까?

+0

은 소스 ATM에 액세스 할 수 없지만 JRE 1.7을 실행하고 있다고 생각합니다. – ctekk

관련 문제