Zwei Maven-Abhängigkeit für die Konflikte der letzten und alten Version

8

Ich benutze das spring-data-dynamoDB-Projekt von hier , wie in seinem pom.xml sie haben 1.6.9.1 Version von aws- java-sdk , aber ich muss die neueste Version von aws-java-sdk für mein Projekt verwenden, um einige seiner Funktionen zu verwenden, um auch Amazon s3 zu implementieren. Wenn ich seine Abhängigkeit einschließe,

%Vor%

bekomme eine Ausnahme wie folgt,

%Vor%

Ich habe Ausschlüsse wie folgt und auch das gleiche Ergebnis versucht,

%Vor%

Ist es möglich, die neueste Version von aws-java-sdk jetzt in meinem Projekt zu verwenden? oder sonst muss spring-data-dynamoDB pom.xml aktualisiert werden, wenn ja, nur ich kann es benutzen oder was ?? Danke Michaellavelle für dieses großartige Projekt. Es hilft mir, den DynamoDB Teil zu vervollständigen.

    
jAddict 23.05.2014, 07:11
quelle

3 Antworten

18

Danke dir @ user944849. Das Problem ist, dass jackson libs in aws-java-sdk verwendet werden, welches eine niedrigere Version als im Frühjahr-data-rest-webmvc ist und damit in Konflikt steht, also durch das Ausschließen von jackson libs aus aws-java-sdk Builds korrekt. Lösung, die ich habe ist,

%Vor%

Ich kann eine Antwort aufgrund des guten Rufs nicht früh genug posten. Dies kann für andere nützlich sein, die so fest sind wie ich. Danke.

    
jAddict 23.05.2014, 18:38
quelle
2

Der Fehler ist NoClassDefFound for com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering . Ich habe in GrepCode nach dieser Klasse gesucht und festgestellt, dass sie sich in der com.fasterxml.jackson.core:jackson-core -Bibliothek befindet. Meine Vermutung ist, dass die beiden Versionen der aws-java-sdk -Bibliothek, die Sie ausprobiert haben, unterschiedliche Jackson-Core-Bibliotheksversionen als transitive Abhängigkeiten angeben. Ihre Anwendung hängt möglicherweise auch explizit von jackson-core ab - eine ältere Version als die, die von der späteren aws-java-sdk benötigt wird. Das Projekt muss eine Version von jackson-core verwenden, die die requiresPropertyOrdering-Methode enthält. Sie sollten alle transitiven Abhängigkeiten sehen können, indem Sie mvn dependency:tree (oder das Äquivalent in Ihrer IDE) ausführen.

Eine Lösung besteht darin, die jackson-core -Bibliothek zu einem <dependencyManagement> -Block im POM des Projekts (oder dem übergeordneten POM) hinzuzufügen, um sicherzustellen, dass die richtige Version verwendet wird.

    
user944849 23.05.2014 14:43
quelle
2

Aus irgendeinem Grund, außer Jackson von aws-java, funktionierte nicht für mich.

%Vor%

Wenn wir uns das Problem ansehen, sieht es so aus, als wäre jackson nicht verfügbar, oder wir haben die falsche Version im Projekt. Diese Methode wurde anscheinend in 2.3.0, der neuesten Version von jackson, hinzugefügt. Ich habe der neuesten Version von jackson eine Abhängigkeit hinzugefügt, und mein Code ist jetzt glücklich.

%Vor%

Ich bin nicht sicher, ob Annotation und Databind notwendig sind. Außerdem arbeite ich an einem riesigen Projekt, also könnten verschiedene Formen von Jackson aus verschiedenen anderen Abhängigkeiten kommen, Jersey, google-http-client-jackson2. Also, es ist auch klug, den Abhängigkeitsgraphen der Maven zu betrachten, um zu sehen, wo irgendwelche Jacksons herkommen.

    
Peter Dietz 02.05.2015 04:45
quelle