1

Hier sind die Abhängigkeiten in meinem pom.xml,Maven Abhängigkeit Versionskonflikt: Anwendung mit Spring Daten Neo4j und Federdaten JPA

<dependency> 
     <groupId>io.spring.platform</groupId> 
     <artifactId>platform-bom</artifactId> 
     <!--<version>1.1.4.RELEASE</version> --> 
     <version>2.0.7.RELEASE</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 
    <dependency> 
     <!-- Import dependency management from Spring Boot --> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-dependencies</artifactId> 
     <version>1.4.0.RELEASE</version> 
     <!--<version>1.2.7.RELEASE</version> --> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-releasetrain</artifactId> 
     <version>Hopper-SR2</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-neo4j</artifactId> 
     <version>4.1.0.RC1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 

und viele andere Abhängigkeiten

Meine Anwendung verwendet in-Speicher -derby (eingebettetes Profil)/MySQL (Remote-Profil) für Transaktionsdatenspeicherung und Neo4j Graph-Datenbank für hierarchische Datenspeicherung. Meine Anforderung besteht darin, Neo4j sowohl im Remote- als auch im Embedded-Modus basierend auf dem Maven-Profil auszuführen. Standardmäßig verwendet Spring Version Manager eine ältere Version von Spring-data-neo4j (3.x.x), die integrierte Neo4j-Unterstützung ist jedoch erst nach Release 4.0.0 verfügbar. Wenn ich meine Anwendung mit der oben I gezeigt Config bauen bin erhalte eine Fehlermeldung, wie unten gezeigt,

// ...exception stacktrace 

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationRepository': Invocation of init method failed; nested exception is java.lang.AbstractMethodError 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) 
    ... 57 common frames omitted 
Caused by: java.lang.AbstractMethodError: null 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:416) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206) 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) 
    at org.springframework.data.neo4j.repository.support.GraphRepositoryFactoryBean.afterPropertiesSet(GraphRepositoryFactoryBean.java:43) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
    ... 67 common frames omitted 

Ich denke, dieser Fehler wegen der widersprüchlichen Versionen von Spring-data-commons ist. Gibt es eine Möglichkeit, diesen Fehler zu umgehen?

Antwort

0

Hopper-SR2 unterstützt Spring-data-neo4j 4.1.2. Warum degradierst du zu 4.1.0.RC1? Versuchen Sie, das Downgrade zu entfernen oder explizit auf 4.1.2 zu setzen.

Wenn Sie immer noch denken, dass Sie eine 3.x-Version erhalten, führen Sie die folgenden Schritte aus und suchen Sie, was in der 3.x-Version auftritt.

mvn dependency:tree -Dverbose -Dincludes=spring-data-neo4j 

Sie können denselben Prozess verwenden, um nach Konflikten mit spring-data-commons zu suchen. Ändern Sie einfach den Include-Parameter (oder lassen Sie ihn für alle Abhängigkeiten weg). Wenn Sie einen Konflikt finden, fügen Sie explizit die richtige Version in Ihre pom.xml ein.