用java将数据存储到mongodb中

用java将数据存储到mongodb中,java,mongodb,morphia,Java,Mongodb,Morphia,我解析文件并检索它们所包含的内容,然后尝试使用morphia将它们存储在我的数据库中,但出现以下错误: INFO: LoggerImplFactory set to org.mongodb.morphia.logging.jdk.JDKLoggerFactory Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/client/model/geojson/codecs/GeoJsonCodecProvide

我解析文件并检索它们所包含的内容,然后尝试使用morphia将它们存储在我的数据库中,但出现以下错误:

INFO: LoggerImplFactory set to org.mongodb.morphia.logging.jdk.JDKLoggerFactory
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/client/model/geojson/codecs/GeoJsonCodecProvider
以下是我的主要观点:

finally {


                    Morphia morphia =new Morphia(); 
                    String mongo2 ="test";
                    CelluDAO cellDAO=new CelluDAO(MongoUtil.getMongo(),morphia,mongo2);
                    System.out.println("Connect to database successfully");

                    for (Cellu cel : data) {
                        System.out.println(cel.getT());
                        cellDAO.save(cel);
                    }


                     MongoUtil.getMongo().close();
                } 
这是我的班级切鲁道:

public class CelluDAO extends BasicDAO<Cellu,String> {

    public CelluDAO (MongoClient mongoClient, Morphia morphia, String dbName) {
        super(mongoClient, morphia, dbName);
    }

public List<Cellu> findAll() {
    return ds.find(Cellu.class).asList();

}
public List<Cellu> findUnderID(int id){
    return ds.find(Cellu.class).filter("Id",id).order("Id").asList();
}

}
公共类CelluDAO扩展了BasicDAO{
公共CelluDAO(MongoClient MongoClient、Morphia Morphia、String dbName){
超级(mongoClient、morphia、dbName);
}
公共列表findAll(){
返回ds.find(Cellu.class).asList();
}
公共列表findUnderID(内部id){
返回ds.find(Cellu.class).filter(“Id”,Id).order(“Id”).asList();
}
}
我的班是蒙古特人:

public class MongoUtil {
        private static final int port = 27017;
        private static final String host = "localhost";
        private static final String databaseName = "test";

        private static MongoClient mongo = null;
        private static MongoDatabase db = null;

        public static MongoClient getMongo() {
            if (mongo == null) {
                mongo = new MongoClient(host, port);
            }
            return mongo;
        }

        public static MongoDatabase getDB() {
            if (db == null) {
                if (mongo == null) {
                    mongo = getMongo();
                }
                db = mongo.getDatabase(databaseName);
            }
            return db;
        }

        public MongoCollection<Document> getCollection(String collection) {
            if (db == null) {
                db = getDB();
            }
            MongoCollection<Document> table = db.getCollection(collection);
            return table;
        }

    }
公共类MongoUtil{
专用静态最终int端口=27017;
私有静态最终字符串host=“localhost”;
私有静态最终字符串databaseName=“test”;
私有静态MongoClient mongo=null;
私有静态MongoDatabase db=null;
公共静态MongoClient getMongo(){
if(mongo==null){
mongo=新的MongoClient(主机、端口);
}
返回mongo;
}
公共静态MongoDatabase getDB(){
if(db==null){
if(mongo==null){
mongo=getMongo();
}
db=mongo.getDatabase(databaseName);
}
返回分贝;
}
公共MongoCollection getCollection(字符串集合){
if(db==null){
db=getDB();
}
MongoCollection表=db.getCollection(collection);
返回表;
}
}
我能正确地做事吗?
有更好的方法吗?

确保您正在使用Java驱动程序的3.x行中的某些内容。听起来您正在使用2.13或2.14。

确保您正在使用Java驱动程序的3.x行中的内容。听起来像是在使用2.13或2.14。

Java doc for NoClassDefFoundError位于,如下所示

当前执行时已存在搜索的类定义 类已编译,但无法再找到该定义

首先,确保MongoDB和驱动程序的版本相同

尝试使用MongoDB Java驱动程序verison 3.1或更高版本。我在mongodb Java文档中看到com.mongodb.client.model.geojson.codecs包,因为这在版本3.0中不可用


因此,Java驱动程序可能会对您正在使用的版本(即3.0.4)抛出错误。

Java doc for NoClassDefFoundError at如下所示

当前执行时已存在搜索的类定义 类已编译,但无法再找到该定义

首先,确保MongoDB和驱动程序的版本相同

尝试使用MongoDB Java驱动程序verison 3.1或更高版本。我在mongodb Java文档中看到com.mongodb.client.model.geojson.codecs包,因为这在版本3.0中不可用


因此,Java驱动程序可能会对您使用的版本(即3.0.4)抛出错误。

代码看起来正常(IMHO),错误似乎与缺少的类有关。如何指定依赖项以及包含哪些依赖项?代码看起来正常(IMHO),错误似乎与缺少的类有关。如何指定依赖项以及包含哪些依赖项?我正在使用java driver.3.0.4,也许我必须通过在命令提示符下运行一些命令来连接到mongodb!该类是在驱动程序的3.1版本中添加的。我添加了驱动程序的新版本,但仍然不起作用!我使用的是java驱动程序.3.0.4,也许我必须通过在命令提示符下运行一些命令来连接mongodb!该类是在驱动程序的3.1版本中添加的。我添加了驱动程序的新版本,但仍然不起作用!