質問

私を初期化するスタンフォードNLPの音声taggerいくには、java.lang.IncompatibleClassChangeError.私は印刷のエラー原因を取得しまnullの場合、印刷、メッセージを取得しま実装クラスです。

これが私のコード:

    try {
        MaxentTagger tagger = new MaxentTagger(path+"left3words-wsj-0-18.tagger");
        Reader reader = new BufferedReader(new InputStreamReader(System.in));
        List<Sentence<? extends HasWord>> sentences = MaxentTagger.tokenizeText(reader);
        for (Sentence<? extends HasWord> sentence : sentences) {
            Sentence<TaggedWord> tSentence = MaxentTagger.tagSentence(sentence);
            System.out.println(tSentence.toString(false));
        }

    } catch (IOException e) {
        System.err.println("READ ERROR");
        e.printStackTrace();
    } catch (Exception e) {
        System.err.println("TAGGER ERROR");
        e.getMessage();
    } catch(java.lang.IncompatibleClassChangeError e){
        e.getStackTrace();
    }

}

なんだろうけど、日本人にどうすればいい?

役に立ちましたか?

解決

いくつかのクラスIncompatibleClassChangeErrorは、いくつかの他のクラスXのバージョンに対してコンパイルされ、その後の試みは、クラスYの異なる(互換性のない)バージョンとそれをロードするために構成されているときに

Yが起こります。あなたではなく、サブタイプよりも、このエラーを取得している場合、それはおそらくYinterfaceまたはその逆にclassから変更されたこと、またはその継承されたインタフェースと実装クラスに変更があったことを意味します。

あなたがどんなgetMessage()出力が表示されない理由はIncompatibleClassChangeErrorlava.lang.Errorないjava.lang.Exceptionのサブタイプであることです。したがってcatchためExceptionはそれをキャッチされていません。単純にこの問題を解決する必要があり、次のcatchブロックにprintln(e.getMessage())ラインをコピーします。

あなたは例外メッセージを印刷するとき、それはあなたの問題を引き起こしているものについての詳細を教えてください。しかし、根本的な原因は、あなたが再コンパイルおよび/またはあなたがコンパイル時と実行時に同じライブラリのJARファイルを使用していることを確認する必要があるということです。

他のヒント

この質問を読み込みのように dupの他stackoverflowの質問.その答えのしようがない人気のでる様にご提供いただきました。

ちなみに:きることを確認の授業に使用されるコンパイルアプリのクラス用のアプリです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top