0

我想以编程方式检查 java 类是否有编译错误。你能告诉我怎么做吗?

4

2 回答 2

4

您可以使用JavaCompiler API来编译该类,它会通知您是否存在一些编译错误。

人为的示例(使用字符串作为输入,但您可以改为读取文件):

String className = "somepackage.YourClass";
String body = "package somepackage;   "
                + "public class YourClass {         "
                + "}                              ";
compile(className, body, TEMP_PATH); //TEMP_PATH: Where the .class file is saved

其中 compile 可能如下所示:

private static void compile(String className, String body, Path path) throws Exception {
    List<JavaSourceFromString> sourceCode = Arrays.asList(new JavaSourceFromString(className, body));

    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
    fileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(path.toFile()));
    boolean ok = compiler.getTask(null, fileManager, null, null, null, sourceCode).call();

    System.out.println("compilation ok = " + ok);
}
于 2013-02-14T10:45:10.103 回答
1

来自how-do-i-programmatically-compile-and-instantiate-a-java-class

你需要先编译它。这可以使用javax.tools API以编程方式完成。这只需要在JRE 之上的本地机器上安装JDK 。

于 2013-02-14T10:49:44.890 回答