我想检测有关导入语句的错误。但是编译单元似乎在类声明本身内部检测到错误。

我正在尝试的代码如下:

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 resolved2)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

07-27 13:46