我想以编程方式检查 java 类是否有编译错误。你能告诉我怎么做吗?
问问题
1002 次
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 回答