英文:
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语言的经验与见解,让所有开发者获益!
评论