![](/img/trans.png)
[英]MongoDB java error java.lang.NoClassDefFoundError: com/mongodb/MongoClient
[英]MongoDB init throw in bootstrap java.lang.NoClassDefFoundError: com/mongodb/client/internal/SimpleMongoClient
我將 MongoDB 驅動程序遷移到 Mongo 5 版本。 在我的項目中,我們在這個庫之前使用過
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
替換為這些庫:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>dev.morphia.morphia</groupId>
<artifactId>core</artifactId>
<version>1.6.1</version>
</dependency>
我們有 Java 8 版本,所以我們不能使用 Morphia 的 2.0 版本,因為它是從 Java 11 開始的。我們為 Mongo 客戶端選項使用構建器,並在創建這些選項時在 SimpleMongoClient 上使用 NoClassDefFoundError。
蒙古支持:
public void init() {
logger.info("MongoDaoSupport :: Start init mongodb connection");
Builder builder = MongoClientOptions.builder()
.connectionsPerHost(Integer.parseInt(connectionsPerHost));
if (Boolean.parseBoolean(readSecondary)) {
builder.readPreference(ReadPreference.secondaryPreferred());
}
List<ServerAddress> seeds = new ArrayList<>();
if (uri.contains(",")) {
for (String s : uri.split(",")) {
seeds.add(new ServerAddress(s));
}
} else {
seeds.add(new ServerAddress(uri));
}
MongoClient mongoClient = new MongoClient(seeds, MongoCredential.createCredential(username, connectDB, password.toCharArray()), builder.build());
Morphia morphia = new Morphia();
morphia.getMapper().getOptions().setMapSubPackages(true);
morphia.mapPackage(entitiesPackage);
datastore = morphia.createDatastore(mongoClient, dbName);
logger.info("Mongodb connected.");
}
日志 :
Caused by: java.lang.NoClassDefFoundError: com/mongodb/client/internal/SimpleMongoClient
at omb.core.mongo.MongoDaoSupport.init(MongoDaoSupport.java:115)
... 39 more
Caused by: java.lang.ClassNotFoundException: com.mongodb.client.internal.SimpleMongoClient from [Module "deployment.my.ear.my-war.war" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
... 40 more
Morphia 2.2.x 在 MongoDB 5.0 上運行得非常好。 您可以在https://morphia.dev找到詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.