在将Antlr版本3.1.1迁移到Antlr 3.3获取NoSuchMethodError:CommonTreeNodeStream.getNodeIndex之后,我遇到了问题

问题描述

目前,我正在使用ANTLR V3.1.1,现在我已迁移到ANTLR V3.3。之后,我得到以下错误:   发生意外的异常:           java.lang.NoSuchMethodError:org.antlr.runtime.tree.CommonTreeNodeStream.getNodeIndex(Ljava / lang / Object;)I       在   * .expression.antlr.FocusCommonTreeNodeStream.getNodeIndex(FocusCommonTreeNodeStream.java:16) 请帮助我解决这个问题。 提前致谢..!!     

解决方法

        好的,通过查看原始帖子下的评论,我会在此处出于完整性的考虑将答案发布在这里,以防人们在搜索网络后找到此问答。 出现此异常的原因是因为您只是替换了ANTLR jar,而没有从语法中重新生成词法分析器和解析器。 ANTLR v3.1.1生成的已编译词法分析器和解析器文件需要ANTLR v3.1.1运行时类。它们不会(必需)与其他ANTLR运行时版本一起使用。 因此,如果您想升级到ANTLR v3.3,则需要使用ANTLR v3.3中的“ 0”从语法文件中重新生成(新的)词法分析器。