【问题标题】:Problems to connect MongoDB from JAVA从 JAVA 连接 MongoDB 的问题
【发布时间】:2011-05-18 08:41:54
【问题描述】:

我正在使用来自 Medline 的文章从事文本挖掘工作。我已经用 MongoDB (http://www.mongodb.org/) 索引了所有 Medline2011,现在我可以用它的 PubMedID 获得一篇文章。我想与 UIMA (http://uima.apache.org/) 一起加入它,并且我创建了 DescriptorReader 以从 MongoDB 获取文章字符串(使用 MondoDB Driver for 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);  
}

但是,当我尝试使用 UIMA 在项目中编写相同的代码时,我遇到了下一个错误:

当我使用时:

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

控制台的错误是:

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

如果我使用 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"

控制台的错误是:

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)
...

我曾尝试(在示例代码中)一次使用 100 个线程访问 MongoDB 并且可以工作...我不知道也不了解发生了什么...

有什么建议吗?

谢谢。

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    将 mongo 库提供给您的类路径,错误应该会消失。

    如果您删除 MongoException(您的类路径不知道这个,缺少 jar)并将其替换为通用 Exception,则您的 try/catch 方法将起作用

    如果您在 Eclipse 中进行开发,只需将 mongo jar 添加到您的构建路径中。我不知道 UIMA,但这没关系

    【讨论】:

    • 谢谢!我已经改变了例外,我有同样的问题。我在项目中有 mongo 驱动程序 (*.jar)。当我写“M”并按 Control + SPACE 时,Eclipse 检测到 Mongo 类。我已经定义了示例代码中的路径,mongo jar 在项目中。
    • 正如我所提到的,我真的不了解 UIMA,您是在 Eclipse IDE 中执行不工作的项目还是导出/打包项目?
    • Asrijaal 不会在 UIMA 中思考。我在几个项目中使用 API UIMA 管道并且工作完美。我可以通过多种方式将 Text 获取到 TextMining,并且我想添加一种新方式,一个新类来访问 mongo 并获取 Text(如示例代码),但我有这个错误......
    • Ok Alex :) 但是在 Eclipse 中执行您的代码还是打包然后执行它?如果是第二种情况,那么eclipse不会导出mongo jar。
    • 好的!好的!谢谢 Asrijaalfor inist inist 一个路径问题,因为我想到了一个线程问题。我在项目中添加了我的 jar,但没有在主文件配置中。现在它完美运行!!!如果您耽误了时间,我深表歉意,再次非常感谢您! ;)
    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2016-10-14
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2015-04-26
    相关资源
    最近更新 更多