java - 如何在CompilationUnit中获取有关导入的问题

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

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

我正在尝试的代码如下:

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

关于java - 如何在CompilationUnit中获取有关导入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770807/

相关文章:

compiler-errors - gfortran包含带有子例程的目录

typescript - 如何使用开源 Typescript 编译器代码提取给定 Typescript 代码的 AST?

python - 抽象语法树中 Python f 字符串的行号

java - StAX JAVA 提取特定标签和数据

java - 如何从JSP运行jar文件?

java - 使用 Google Drive API 和 Java 读取共享云端硬盘

java - 在 eclipse 中启动 tomcat 8 服务器时出现 java.lang.VerifyError : class waffle. apache.MixedAuthenticator 覆盖 final方法 start.()V

c# - C#Winform编译错误

c++ - 编译器错误 :falied to determine size of array size identifier

perl - 解析Perl 5并检查语法树