Pergunta

Eu estou tentando inicializar o Stanford PNL Parte do tagger Speech e eu continuo recebendo um java.lang.IncompatibleClassChangeError. Quando eu imprimir a causa do erro, eu recebo null, quando eu imprimir a mensagem que recebo Implementação Class.

Este é meu código:

    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();
    }

}

Alguém sabe como consertar isso?

Foi útil?

Solução

Um IncompatibleClassChangeError acontece quando alguma classe X foi compilado com uma versão de algum outro Y classe, e em seguida, é feita uma tentativa para carregá-lo com uma versão diferente (incompatível) do Y classe. Se você estiver recebendo esse erro, em vez de um subtipo, isso provavelmente significa que Y mudou a partir de um interface a um class ou vice-versa, ou que houve uma mudança em suas interfaces herdadas e classes implementadas.

A razão que você não está vendo qualquer saída getMessage() é que IncompatibleClassChangeError é um subtipo de lava.lang.Error não java.lang.Exception. Portanto, o catch para Exception não é captura-lo. Simplesmente copiando a linha println(e.getMessage()) para o próximo bloco catch deve corrigir isso.

Quando você imprime a mensagem de exceção, ele deve dizer mais sobre o que está causando o problema. Mas a causa raiz é que você precisa recompilar e / ou certifique-se que você está usando os mesmos arquivos JAR da biblioteca em tempo de compilação e tempo de execução.

Outras dicas

Esta questão lê como um dup de outra pergunta stackoverflow . A resposta a essa questão parece ter sido muito popular, por isso é provável que seja útil.

Como um aparte:. Você deve verificar se as classes que são usadas para compilar a sua aplicação são as classes que são usados ??para executar o aplicativo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top