2011-05-18 2 views
0

Je travaille dans Text Mining avec des articles de Medline. J'ai indexé tous Medline2011 avec MongoDB (http://www.mongodb.org/), maintenant je peux obtenir un article avec son PubMedID. Je veux le rejoindre avec UIMA (http://uima.apache.org/), et j'ai créé le DescriptorReader pour obtenir l'article String de MongoDB (en utilisant MondoDB Driver for JAVA). J'ai ce code (un exemple rapide) et de travaux:Problèmes de connexion MongoDB de JAVA

public static void main(String[] args) throws UnknownHostException, MongoException { 
    Mongo m = new Mongo("localhost", 27017); 
    DB db = m.getDB(DB_NAME); 
    DBCollection coll = db.getCollection(COLLECTION_NAME); 

    BasicDBObject query = new BasicDBObject();  
    String pmid = "6889938";  
    query.put("_id", pmid); 

    DBObject myDoc = coll.findOne(query); 

    System.out.println(myDoc); 
} 

Mais, lorsque je tente d'écrire le même code dans un projet avec UIMA je l'erreur suivante:

Quand j'utilise:

private String getAbstractXMLFromMongoDB(String pmid) throws UnknownHostException, MongoException{  
     Mongo m = new Mongo(); // <-----ERROR 
     ... 
     return "something" 

L'erreur dans la console est:

ThreadGroup.uncaughtException()-Got Error 
    java.lang.NoClassDefFoundError: com/mongodb/Mongo 
... 

Et si j'utilise try/catch:

private String getAbstractXMLFromMongoDB(String pmid){  
    try { 
     Mongo m = new Mongo(); // <-----ERROR 
     ... 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (MongoException e) { 
     e.printStackTrace(); 
    } 
    return "something" 

L'erreur dans la console est:

Exception in thread "Thread-5" java.lang.NoClassDefFoundError: com/mongodb/MongoException 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
... 

J'ai essayé (dans le code exemple) l'accès à MongoDB avec 100 threads à la fois et travaille ... Je ne sais pas et n'undertands ce se passe ...

Des suggestions?

thx.

Répondre

2

Fournissez les bibliothèques mongo à votre chemin de classe et l'erreur doit être supprimée.

Votre approche try/catch fonctionnerait, si vous supprimez le MongoException (celui-ci ne sait pas par votre classpath, pots manquants) et le remplacer par un Exception

générique Si vous développez dans Eclipse ajoutez simplement le mongo pots à votre buildpath. Je ne sais pas UIMA mais cela ne devrait pas importer

+0

Merci! J'ai changé l'exception et j'ai le même problème. J'ai le pilote mongo (* .jar) dans le projet. Lorsque j'écris "M" et que j'appuie sur Control + SPACE, Eclipse détecte la classe Mongo. J'ai défini le chemin comme dans le code d'exemple, et mongo jar est dans le projet. –

+0

Comme je l'ai mentionné, je ne connais pas vraiment UIMA, exécutez-vous le projet qui ne fonctionne pas dans votre IDE eclipse ou exportez-vous/emballez-vous le projet? – onigunn

+0

Asrijaal ne pense pas en UIMA. J'utilise API UIMA pipeline avec plusieurs projets et fonctionne parfaitement. Je peux obtenir du texte à TextMining de plusieurs façons, et je veux ajouter une nouvelle façon, une nouvelle classe pour accéder à mongo et obtenir du texte (comme le code exemple), mais j'ai cette erreur ... –