2014-05-12 3 views
0

J'ai une classe publique Stm:comment trouver classpath dans le projet écrit en NetBeans à utiliser dans jpype

package stm; 

    import zemberek.morphology.apps.TurkishMorphParser; 
    import zemberek.morphology.parser.MorphParse; 

    import java.io.IOException; 
    import java.util.List; 

    public class Stm { 
     TurkishMorphParser parser; 


     public Stm(TurkishMorphParser parser) { 
      this.parser = parser; 
     } 


     public void do_stm(String word) { 
      System.out.println("Word = " + word); 

      List<MorphParse> parses = parser.parse(word); 
      for (MorphParse parse : parses) { 

       System.out.println(parse.getStems()); 

      } 
     } 



     public static void main(String[] args) throws IOException { 

      TurkishMorphParser parser = TurkishMorphParser.createWithDefaults(); 
      new Stm(parser).do_stm("ankaraya"); 

     } 
    } 

et aa.py comme ci-dessous:

import jpype 
    from jpype import * 

    import os 

    classpath = "/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/antlr-4.2.2-complete.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/guava-15.0.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/zemberek-core-0.9.0.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/zemberek-lm-0.9.0.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/zemberek-morphology-0.9.0.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/zemberek-tokenization-0.9.0-2.jar:/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/build/classes/stm/" 

    startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % classpath) 

    A = JClass('Stm') 

    a = A() 
    jpype.shutdownJVM() 

aa.py en cours d'exécution, je obtenir cette erreur:

Traceback (most recent call last): 

    File "aa.py", line 15, in <module> 

    A = JClass('Stm') 

    File "/usr/lib/python2.7/dist-packages/jpype/_jclass.py", line 54, in JClass 

    raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name) 

    jpype._jexception.ExceptionPyRaisable: java.lang.Exception: Class Stm not found 

je peux appeler la classe normale en python, mais avoir des problèmes dans le projet, je l'ai écrit dans NetBeans avec certains fichiers importés jar. fichiers jar sont situés

/home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/jars/ 

Je sais que le problème est avec classpath! compte tenu des fichiers jar que j'ai utilisé, comment dois-je remplir la partie classpath ????????????

Répondre

0

La dernière entrée de votre chemin de classe doit être /home/jeren/Desktop/Project/TweetParse/Parse_Tweets/stm/build/classes et vous devez créer une classe comme A = JClass('stm.Stm'). Regardez peut-être comment les classes sont organisées en paquets. Par exemple http://docs.oracle.com/javase/tutorial/java/package/packages.html

+0

merci pour la réponse, mais j'ai encore la même erreur: Traceback (le plus récent appel dernier): Fichier "aa.py", ligne 14, en A = JClass ('stm.Stm') Fichier "/usr/lib/python2.7/dist-packages/jpype/_jclass.py", ligne 54, dans JClass relance _RUNTIMEEXCEPTION.PYEXC ("Classe% s introuvable"% name) jpype._jexception.ExceptionPyRaisable: java.lang.Exception: Classe stm.Stm introuvable – Jeren

+0

Assurez-vous que la classe est construite ('/ home/jeren/Desktop/Projet/TweetParse/Parse_Tweets/stm/build/classes/stm/Stm.class' existe). Vérifiez la version Java à l'aide de votre bibliothèque Python et de votre compilateur Java. Aussi, lorsque vous résolvez cela, vous devrez ajouter le constructeur par défaut (no-arg) pour instancier 'a = A()'. – Radim

+0

Stm.class existe! comment puis-je utiliser le constructeur avec des arguments ??? est-ce possible de toute façon ??????? – Jeren

Questions connexes