java.lang.NoSuchMethodError:java_cup.runtime.lr_parser.getSymbolFactory()Ljava_cup / runtime / SymbolFactory

时间:2017-06-09 15:42:12

标签: java jflex

我刚刚开始研究的项目使用JFlex,当我尝试使用ant编译项目时,我收到以下错误:

java.lang.NoSuchMethodError: java_cup.runtime.lr_parser.getSymbolFactory()Ljava_cup/runtime/SymbolFactory

造成这种情况的原因是什么?我已经下载了JFlex jar,并且正在我的项目中使用它。

2 个答案:

答案 0 :(得分:2)

原来使用jflex ant任务,您需要download JFlex from here,将其解压缩到某处,然后将jflex-1.6.1/lib/*文件复制到ant/lib/文件夹,然后重试

答案 1 :(得分:1)

在IntelliJ中的同一个项目中同时使用JFlex.jarcup_v10k.jar时遇到了同样的问题。

cup_v10k.jar中存在问题,java_cup.runtime.lr_parser类也存在,并且该类中不存在方法getSymbolFactory()

IntelliJ在搜索lr_parser类时不知道要信任哪个jar,并选择了按字典顺序排列的第一个jar - cup_v10k.jar

我的解决方案/黑客是在cup_v10k.jar之后将JFlex.jar重命名为词典式的内容,例如zcup_v10k.jar。然后IntelliJ能够找到正确的lr_parser类。