如何在CompilationUnit中获取有关导入

时间:2017-08-19 11:09:54

标签: java compiler-errors abstract-syntax-tree eclipse-jdt compilationunit

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

我正在尝试的代码如下:

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

如何使用编译单元以编程方式获取导入错误? 或者我有什么方法可以做到这一点? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

当你说astview时,我会假设你在谈论eclipse ASTView插件。 ASTView插件是IDE的一部分,使用IDE具有的所有信息构建。这包括已添加到项目中的库。

编译单元仅使用源代码创建ast。它不了解项目中添加的库。它只能检测语法错误,从而检测到分号丢失的问题。

您可以查看JavaConventions validateImportDeclaration