英文:
NoSuchMethodError when initializing the MongoClient
问题
我在我的pom.xml中引入了Morphia,使用了Mongo和Morphia的所示版本。我必须使用旧版本,因为我正在使用Java 8,而UUID转换器只能在这个版本的Morphia中工作:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.5</version>
</dependency>
<dependency>
<groupId>dev.morphia.morphia</groupId>
<artifactId>core</artifactId>
<version>1.6.0-RC1</version>
</dependency>
在运行时尝试创建数据存储时,以下 Java 代码行:
private static final Datastore datastore = morphia.createDatastore(new MongoClient(), "vulcandev");
会抛出 NoSuchMethodError 异常:
java.lang.NoSuchMethodError:
com.mongodb.client.internal.MongoClientDelegate.(Lcom/mongodb/internal/connection/Cluster;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/lang/Object;Lcom/mongodb/client/internal/Crypt;)V
完整的堆栈跟踪如下:
[22:56:37 ERROR]: 在启用 VulcanCore v3.0-SNAPSHOT 时出错(是否为最新版本?) java.lang.NoSuchMethodError:
com.mongodb.client.internal.MongoClientDelegate.(Lcom/mongodb/internal/connection/Cluster;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/lang/Object;Lcom/mongodb/client/internal/Crypt;)V at
com.mongodb.MongoClient.(MongoClient.java:346) ~[?:?]
at com.mongodb.MongoClient.(MongoClient.java:205) ~[?:?]
at com.mongodb.MongoClient.(MongoClient.java:194) ~[?:?]
at com.mongodb.MongoClient.(MongoClient.java:155) ~[?:?]
at vulcanprisons.iron.vulcancore.mongo.MongoManager.(MongoManager.java:13) ~[?:?]
at vulcanprisons.iron.vulcancore.players.PlayerDataManager.setup(PlayerDataManager.java:13) ~[?:?]
at vulcanprisons.iron.vulcancore.VulcanCore.setupManagers(VulcanCore.java:40) ~[?:?]
at vulcanprisons.iron.vulcancore.VulcanCore.onEnable(VulcanCore.java:33) ~[?:?]
英文:
I shade Morphia in my pom.xml, using the versions shown for Mongo and Morphia. I have to use an older version because I'm working with Java 8 and the UUID converter only works in this version of Morphia:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.5</version>
</dependency>
<dependency>
<groupId>dev.morphia.morphia</groupId>
<artifactId>core</artifactId>
<version>1.6.0-RC1</version>
</dependency>
When attempting to create the datastore at runtime, the following line of Java code:
private static final Datastore datastore = morphia.createDatastore(new MongoClient(), "vulcandev");
Throws a NoSuchMethodError:
> java.lang.NoSuchMethodError:
> com.mongodb.client.internal.MongoClientDelegate.<init>(Lcom/mongodb/internal/connection/Cluster;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/lang/Object;Lcom/mongodb/client/internal/Crypt;)V
With the full stack trace:
> [22:56:37 ERROR]: Error occurred while enabling VulcanCore
> v3.0-SNAPSHOT (Is it up to date?) java.lang.NoSuchMethodError:
>> com.mongodb.client.internal.MongoClientDelegate.<init>(Lcom/mongodb/internal/connection/Cluster;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/lang/Object;Lcom/mongodb/client/internal/Crypt;)V at
>>> com.mongodb.MongoClient.<init>(MongoClient.java:346) ~[?:?]
>>> at com.mongodb.MongoClient.<init>(MongoClient.java:205) ~[?:?]
>>> at com.mongodb.MongoClient.<init>(MongoClient.java:194) ~[?:?]
>>> at com.mongodb.MongoClient.<init>(MongoClient.java:155) ~[?:?]
>>> at vulcanprisons.iron.vulcancore.mongo.MongoManager.<clinit>(MongoManager.java:13) ~[?:?]
>>> at vulcanprisons.iron.vulcancore.players.PlayerDataManager.setup(PlayerDataManager.java:13) ~[?:?]
>>> at vulcanprisons.iron.vulcancore.VulcanCore.setupManagers(VulcanCore.java:40) ~[?:?]
>>> at vulcanprisons.iron.vulcancore.VulcanCore.onEnable(VulcanCore.java:33) ~[?:?]
专注分享java语言的经验与见解,让所有开发者获益!

评论