Java에서 Stanford Postagger를 사용하여 java.lang.incompatibleclasschangeerror를 얻습니다

StackOverflow https://stackoverflow.com/questions/2040206

  •  19-09-2019
  •  | 
  •  

문제

Speech Tagger의 Stanford NLP 부분을 초기화하려고 노력하고 있으며 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();
    }

}

누구 든지이 문제를 해결하는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

an IncompatibleClassChangeError 수업이 발생할 때 발생합니다 X 다른 클래스의 한 버전에 대해 컴파일되었습니다. Y, 그런 다음 다른 (호환되지 않는) 클래스로로드하려는 시도가 이루어집니다. Y. 하위 유형이 아닌이 오류를 받고 있다면 아마도 Y AN에서 변경되었습니다 interface a class 또는 그 반대로, 또는 상속 된 인터페이스 및 구현 된 클래스가 변경되었습니다.

당신이 보지 못하는 이유 getMessage() 출력입니다 IncompatibleClassChangeError 하위 유형입니다 lava.lang.Error ~ 아니다 java.lang.Exception. 따라서 catch ~을 위한 Exception 그것을 잡지 않습니다. 간단히 복사합니다 println(e.getMessage()) 다음 캐치 블록에 라인은 이것을 고정해야합니다.

예외 메시지를 인쇄 할 때 문제의 원인에 대해 더 많이 알려야합니다. 그러나 근본 원인은 컴파일 시간과 런타임에 동일한 라이브러리 JAR 파일을 사용하고 있는지 확인하고/하거나 동일한 라이브러리 JAR 파일을 사용하고 있는지 확인해야합니다.

다른 팁

이 질문은 a처럼 읽습니다 다른 stackoverflow 질문의 dup. 그 질문에 대한 대답은 꽤 인기있는 것으로 보이므로 도움이 될 것입니다.

따로 : 앱을 컴파일하는 데 사용되는 클래스가 앱을 실행하는 데 사용되는 클래스인지 확인해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top