다른 클래스의 클래스를 컴파일하려고하지만 사용 된 모든 메소드가 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");
}
}
내가 이클립스에서 프로그램을 시작합니다
여기에 코드입니다.
왜곡합니까?
은 소스 ATM에 액세스 할 수 없지만 JRE 1.7을 실행하고 있다고 생각합니다. – ctekk