开发者

Programmatically compile java with JavaCompiler?

I got this Java code from another Stack Overflow thread

import java.io.*;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;

public class Main {
  public static void main(String[] args) throws IOException{
    String source = " public class Test { public static void main(String args[]) {     System.out.println(\"hello\"); } }";

    // Save source in .java file.
    File root = new File("C:\\java\\");
    root.mkdir();
    File sourceFile = new File(root, "\\Test.java");
    Writer writer = new FileWriter(sourceFile);
    writer.write(source);
    writer.close();

    // Compile source file.
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    compiler.run(null, null, null, sourceFile.getPath());
  }
}

But I keep getting a NullPointerException like this

Exception in thread "main" java.lang.NullPointerException
    at com.zove.compiler.Main.main(Main.java:24)

It does compile but it throws the exception at runtime. What am I doing wron开发者_如何学运维g?


Your code works fine for me when I execute it using the JDK. If I execute it using the JRE I get a NullPointerException on compiler.run(...) like you.

Therefore I assume that you only have to switch the Java runtime for executing your code.


Well you can't compile java programs using the JRE.

So you have to have the JDK in your path so that the compilation be possible.

In your case without even running your program if you run in command line:
javac you would get

'javac' is not recognized as an internal or external command

This is why you get the null pointer exception.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜