【问题标题】:How to check if a Java source file is valid (has no errors)?如何检查 Java 源文件是否有效(没有错误)?
【发布时间】:2014-12-07 18:17:12
【问题描述】:

在我的代码中,我打开我的 file.java 并使用 JavaParser 解析他。

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编译器是否可行?

【问题讨论】:

  • 类需要用小写的c来写。 :)
  • 没问题,这些小东西是你自己看不到的。 :)
  • 这可以通过 Eclipse JDT eclipse.org/jdt 实现。当然,这某种意义上的Java Compiler,但它可以部署为一堆JAR。

标签: java validation javaparser


【解决方案1】:

不使用java编译器是否可行?

没有。您(重新?)发明的任何解决方案都将引导您使用另一个编译器。解析和验证错误是编译器工作的重要组成部分。

【讨论】:

  • 好吧,IDE 可以在不显式编译的情况下验证这一点(是的,它确实会编译它,但在后台你永远看不到它,所以我猜这很重要)
  • @MightyPork 显式或隐式地编译它。所以 ursa 的观点成立。
  • 我同意:有很多事情基本上都需要编译器。但是我们计划将来在 JavaParser 本身中构建一些验证,因此我们可以检查 AST 是否有效。对于完整的验证,我们还需要使用 JavaSymbolSolver,它解析类型和方法调用。它基本上重新实现了你在编译器中找到的很多东西。
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2015-11-15
  • 2020-02-10
  • 2010-10-27
相关资源
最近更新 更多