3

この簡単な例に従って、パーボイルドフレームワークのパーサークラスを作成しました。

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プラグインプロジェクト)間の依存関係は問題ないはずです。

誰かが私が間違っていることや間違いがどこにあるのかを知ることができますか?

4

1 に答える 1

1

実際には、実行構成と関係があるようです。パーボイルド関連のすべてのコードを1つのプロジェクトに移動すると、機能します。とにかくカプセル化の方が良いので、このままにしておこうと思います。

于 2013-02-19T17:17:04.457 に答える