2017-10-11 96 views
1

我用這種依賴性在我的項目:春數據/ MongoDB的 - 的NoSuchMethodError:com.mongodb.DBRef

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-mongodb</artifactId> 
    <version>1.5.1.RELEASE</version> 
</dependency> 

,並用這種依賴性壽MongoDB的潛水員人工製品是在我的項目:

mongodb-driver-3.4.1.jar and 
mongodb-driver.core-3.4.1.jar 

兩者都有包裝com.mongodb。 我收到以下例外情況:

nested exception is java.lang.NoSuchMethodError: com.mongodb.DBRef.<init>(Lcom/mongodb/DB;Ljava/lang/String;Ljava/lang/Object;)V 

有沒有人知道我在做什麼錯?

這是我收集:

import org.springframework.data.annotation.Id; 

進口org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "MyCollection") 
public class MyCollection { 

@Id 
private String id; 
@DBRef 
private User user; 

} 

Spring-boot-starter-data-mongodb

+0

我沒有線索,但在上面你給版本的依賴和截圖沒有添加的版本? – degath

+0

,因爲版本是在父POM中定義的 – quma

回答

0

兩種傳統驅動程序(2.x)和新的驅動程序(3.x)具有相同的封裝(com.mongodb

java.lang.NoSuchMethodError: com.mongodb.DBRef.<init>(Lcom/mongodb/DB;Ljava/lang/String;Ljava/lang/Object;)V 

https://github.com/mongodb/mongo-java-driver/blob/2.14.x/src/main/com/mongodb/DBRef.java#L67

通知的第一個參數是DB這是2.x驅動程序中的構造函數,並從3.x版本中刪除上。

因此,它看起來像您的項目仍然參考2.x驅動程序版本。