我刚刚开始研究的项目使用JFlex,当我尝试使用ant
编译项目时,我收到以下错误:
java.lang.NoSuchMethodError: java_cup.runtime.lr_parser.getSymbolFactory()Ljava_cup/runtime/SymbolFactory
造成这种情况的原因是什么?我已经下载了JFlex jar,并且正在我的项目中使用它。
答案 0 :(得分:2)
原来使用jflex
ant任务,您需要download JFlex from here,将其解压缩到某处,然后将jflex-1.6.1/lib/*
文件复制到ant/lib/
文件夹,然后重试
答案 1 :(得分:1)
在IntelliJ中的同一个项目中同时使用JFlex.jar
和cup_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
类。