gpt4 book ai didi

javaparser - 遇到词法错误 : after : ""

转载 作者:行者123 更新时间:2023-11-29 04:42:49 24 4
gpt4 key购买 nike

我正在使用这个 javaparser https://github.com/javaparser/javaparser解析一些github用户的大量java源代码,从中进行一些统计(这是一个大学项目)。一切似乎都工作正常,但在某些时候,特定的源代码会产生此错误:

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

这是文件中的内容:

public class Test {
/**<caret>
public void foo() {
}
}

这是我解析文件的方式:

...

new NodeIterator(new NodeIterator.NodeHandler() {
@Override
public boolean handle(Node node) {
...
};
}).explore(JavaParser.parse(file));

...

这是 NodeIterator 类:

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

关于javaparser - 遇到词法错误 : <EOF> after : "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com