Utilizando el postagger Stanford en java, consiguiendo java.lang.IncompatibleClassChangeError

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de inicializar la PNL Parte del discurso etiquetador de Stanford y me siguen dando un java.lang.IncompatibleClassChangeError. Al imprimir la causa del error, consigo nula, al imprimir el mensaje que recibo de aplicación Clase.

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

}

¿Alguien sabe cómo solucionar este problema?

¿Fue útil?

Solución

Un IncompatibleClassChangeError sucede cuando algunos X clase ha sido compilado con una versión de algún otro Y clase, y luego se hace un intento para cargarlo con una versión diferente (incompatible) de la Y clase. Si usted está recibiendo este error en lugar de un subtipo, probablemente significa que Y ha cambiado desde un interface a un class o viceversa, o que ha habido un cambio en sus interfaces heredadas y clases implementadas.

La razón por la que usted no está viendo ninguna salida getMessage() es que IncompatibleClassChangeError es un subtipo de lava.lang.Error no java.lang.Exception. Por tanto, el catch para Exception no es la captura de él. Simplemente copiando la línea println(e.getMessage()) al siguiente bloque catch debe solucionar este problema.

Cuando se imprime el mensaje de excepción, debe decirle más acerca de lo que está causando el problema. Pero la causa fundamental es que es necesario volver a compilar y / o asegúrese de que está utilizando los mismos archivos JAR de la biblioteca en tiempo de compilación y tiempo de ejecución.

Otros consejos

Esta pregunta se lee como un DUP de otra pregunta StackOverflow . La respuesta a esa pregunta parece haber sido bastante popular, por lo que es probable que sea útil.

Como acotación al margen:. Debe verificar que las clases que se utilizan para compilar su aplicación son las clases que se utilizan para ejecutar la aplicación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top