我想检测有关导入语句的错误。但是编译单元似乎在类声明本身内部检测到错误。
我正在尝试的代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import org.apache.commons.*;
public class Bad {
Random r1 = new Random();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
int x = new Random().nextInt(3);
double y = new Random().nextDouble();
int z = 10
}
我没有在项目中添加apache commons。我可以在astview中看到两个错误,如下所示。
1)
E[90, 10] The import org.apache cannot be resolved
2)E[323, 2] Syntax error, insert ";" to complete FieldDeclaration
但是,当我尝试使用
CompilationUnit
打印许多问题时,它仅返回一个,并且消息如下1)
Syntax error, insert ";" to complete FieldDeclaration
如何使用编译单元以编程方式获取导入错误?
还是有什么办法可以做到这一点?
提前致谢。
最佳答案
当您说astview时,我假设您是在谈论Eclipse ASTView插件。 ASTView插件是IDE的一部分,并使用IDE拥有的所有信息进行构建。这包括已添加到项目中的库。
编译单元仅使用源代码创建ast。它不了解有关项目中添加的库的知识。它只能检测语法错误,因此可以检测到分号丢失问题。
您可以检查JavaConventions validateImportDeclaration。