Utilisation de la PosTagger Stanford en java, obtenir java.lang.IncompatibleClassChangeError

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

  •  19-09-2019
  •  | 
  •  

Question

Je suis en train d'initialiser le PNL Stanford Partie du discours tagger et je continue à obtenir un java.lang.IncompatibleClassChangeError. Lorsque j'imprime la cause de l'erreur, je reçois nulle, quand j'imprimer le message que je reçois d'exécution de classe.

Ceci est mon code:

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

}

Quelqu'un sait comment résoudre ce problème?

Était-ce utile?

La solution

Un IncompatibleClassChangeError se produit lorsque certains X de classe a été compilé avec une version de une autre classe Y, puis une tentative de le charger avec une version différente (incompatible) de la Y de classe. Si vous obtenez cette erreur plutôt que d'un sous-type, cela signifie probablement que Y a changé d'un interface à un class ou vice-versa, ou qu'il ya eu un changement dans ses interfaces héritées et les classes mises en œuvre.

La raison pour laquelle vous ne voyez pas une sortie getMessage() est que IncompatibleClassChangeError est un sous-type de lava.lang.Error pas java.lang.Exception. Par conséquent, le catch pour Exception ne l'attrapant. copier simplement la ligne de println(e.getMessage()) au prochain bloc catch devrait résoudre ce problème.

Lorsque vous imprimez le message d'exception, il devrait vous en dire plus sur ce qui est la cause du problème. Mais la cause fondamentale est que vous devez recompiler et / ou assurez-vous que vous utilisez les mêmes fichiers de bibliothèque JAR au moment de la compilation et l'exécution.

Autres conseils

Cette question se lit comme un dup d'un autre question stackoverflow. La réponse à cette question semble avoir été très populaire, il est donc susceptible d'être utile.

En aparté. Vous devez vérifier que les classes qui sont utilisées pour compiler votre application sont les classes qui sont utilisées pour exécuter l'application

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top