javaparser-遇到词法错误:<;EOF>;在“之后”&引用;

javaparser-遇到词法错误:<;EOF>;在“之后”&引用;,java,exception,eof,lexical,javaparser,Java,Exception,Eof,Lexical,Javaparser,我正在使用这个javaparser来解析一些github用户的许多java源代码,以便对他们进行统计(这是一个大学项目)。一切似乎都很好,但在某些情况下,特定的源代码会产生以下错误: Exception in thread "main" com.github.javaparser.TokenMgrError: Lexical error at line 6, column 2. Encountered: <EOF> after : "" 这是NodeInterator类: pub

我正在使用这个javaparser来解析一些github用户的许多java源代码,以便对他们进行统计(这是一个大学项目)。一切似乎都很好,但在某些情况下,特定的源代码会产生以下错误:

Exception in thread "main" com.github.javaparser.TokenMgrError: Lexical error at line 6, column 2.  Encountered: <EOF> after : ""
这是NodeInterator类:

public class NodeIterator {
    public interface NodeHandler {
        boolean handle(Node node);
    }

    private NodeHandler nodeHandler;

    public NodeIterator(NodeHandler nodeHandler) {
        this.nodeHandler = nodeHandler;
    }

    public void explore(Node node) {
        if (nodeHandler.handle(node)) {
            for (Node child : node.getChildrenNodes()) {
                explore(child);
            }
        }
    }
}
我已经理解了这个问题,但是这个问题停止了整个解析。我有很多文件要在for中解析,因此如何继续解析其他文件?或者有没有工具可以在解析java文件之前检查它是否写得好?

你不能解决“问题”,因为它不是问题。错误是正确的,因为您试图解析的源代码不正确。它的注释不会在文件结束前终止

如果使用
javac
编译相同的源代码,也会出现错误。它比您的
javaparser
更详细,但它仍然是一个错误,因为您试图解析的源代码有这个错误

Javac输出:

Test.java:2: error: unclosed comment
    /**<caret>
    ^
Test.java:6: error: reached end of file while parsing
2 errors
Test.java:2:错误:未关闭的注释
/**
^
java:6:错误:解析时到达文件末尾
2个错误

那么,有没有办法检查我正在解析的文件是否写得很好,或者跳过错误并继续解析?在令牌解析错误之后,这个库似乎没有恢复功能,而且在任何情况下,在令牌化很难恢复的情况下,命中文件末尾。您最好忽略文件的其余部分或完整文件。我的问题是,我正在解析许多文件,而这些错误中的每一个都会阻止整个解析过程,因此您知道如何继续解析其余文件,或者是否知道一个工具来检查文件是否“编写良好”?
public class NodeIterator {
    public interface NodeHandler {
        boolean handle(Node node);
    }

    private NodeHandler nodeHandler;

    public NodeIterator(NodeHandler nodeHandler) {
        this.nodeHandler = nodeHandler;
    }

    public void explore(Node node) {
        if (nodeHandler.handle(node)) {
            for (Node child : node.getChildrenNodes()) {
                explore(child);
            }
        }
    }
}
Test.java:2: error: unclosed comment
    /**<caret>
    ^
Test.java:6: error: reached end of file while parsing
2 errors