我已经为parboiled框架创建了一个解析器类,根据this simple example:
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插件项目)之间的依赖关系应该没问题。
有谁能告诉我我做错了什么,或者错在哪里?
最佳答案
它实际上似乎与运行配置有关。我把所有与parboiled相关的代码移到一个项目中,它就工作了。我想我会保持这种方式,因为它是更好的封装无论如何。