我根据this simple example创建了一个用于parboiled框架的解析器类:
package my.package;
import org.parboiled.BaseParser;
import org.parboiled.annotations.BuildParseTree;
@BuildParseTree
public class QueryParser extends BaseParser<Object> {
//some rules
}
如果我尝试创建解析器,如示例
所示QueryParser parser = Parboiled.createParser(QueryParser.class);
我在那一行得到一个例外:
java.lang.ClassCastException: my.package.QueryParser$$parboiled cannot be cast to org.parboiled.BaseParser
at org.parboiled.Parboiled.createParser(Parboiled.java:56)
...
我真的没有做任何在示例中没有做过的特殊事情。唯一的区别是解析器和调用它的类在不同的项目中,但我无法想象为什么这应该重要。项目之间的依赖关系(Eclipse插件项目)应该没问题。
任何人都能说出我做错了什么或错误可能在哪里?
答案 0 :(得分:1)
它实际上似乎与运行配置有关。我把所有已经预先设定的相关代码移到了一个项目中,然后才有效。我想我会保持这种方式,因为无论如何它都是更好的封装。