如何检查Java源文件是否有效(没有错误)?
在我的代码中,我打开我的file.java并用JavaParser解析他。如何检查Java源文件是否有效(没有错误)?
FileInputStream in = new FileInputStream(".../file.java");
CompilationUnit cu;
try {
// parse the file
cu = JavaParser.parse(in);
} finally {
in.close();
}
........
file.java:
public class File{
public void ownMethod(){...}
public static void main(String[] args){
ownMethod(5); //Note the extra parameter
}
}
在file.java有一个错误:main
调用方法ownMethod
带有一个参数的方法,但ownMethod
预计0的参数。 JavaParser不会检测到这个错误,并分析出现这个错误的file.java。我怎么知道(在我的代码中)file.java是否没有错误?没有使用java编译器是否可行?
Is it posible without using java compiler?
不是。任何解决方案,您的(重新)发明,将导致你到另一个编译器。解析&验证错误是编译器工作的重要部分。
IDE可以验证,没有明确编译它(是的,它实际上是编译它,但在后台,你永远不会看到它,所以这个计数我猜) – MightyPork 2014-12-07 19:05:26
@MightyPork显式或隐式地,它编译它。所以ursa的观点就是这样。 – lexicore 2014-12-07 19:14:49
我同意:有很多事情你基本上需要一个编译器。然而,我们打算将来在JavaParser本身中构建一些验证,因此我们可以检查AST是否有效。对于完整的验证,我们还需要使用JavaSymbolSolver来解析类型和方法调用。它基本上重新实现了许多在编译器中找到的东西。 – 2016-11-28 12:30:55
类需要使用小写字母c写入。 :) – Phiwa 2014-12-07 18:18:50
谢谢Phiwa:P我的不好 – user1951618 2014-12-07 18:23:23
没问题,那些你从未见过你的小事。 :) – Phiwa 2014-12-07 18:25:35