2012-04-08 4 views
2

Ich möchte ein Maven-Projekt implementieren, die Spring sozialen Rahmen integriert mit Jersey verwenden. Aber es hat ein Abhängigkeitsproblem.Maven-Projekt mit Spring Social Framework und Jersey

Ich denke es liegt daran, dass ich einige Ausschlüsse im Jersey-Frühling verpasst habe. Kann mir jemand helfen?

Die pom.xml ist:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>org.springframework.social.samples</groupId> 
<artifactId>world-rank</artifactId> 
<name>World Rank</name> 
<packaging>war</packaging> 
<version>1.0.0</version> 
<properties> 
    <java-version>1.6</java-version> 
    <org.springframework.social-version>1.1.0.BUILD-SNAPSHOT</org.springframework.social-version> 
    <org.springframework.social.facebook-version>1.1.0.BUILD-SNAPSHOT</org.springframework.social.facebook-version> 
    <org.springframework.social.twitter-version>1.1.0.BUILD-SNAPSHOT</org.springframework.social.twitter-version> 
    <org.springframework-version>3.1.1.RELEASE</org.springframework-version> 
    <org.springframework.security-version>3.1.0.RELEASE</org.springframework.security-version> 
    <org.slf4j-version>1.6.1</org.slf4j-version> 
</properties> 
<dependencies> 
    <!-- Jersey --> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.8</version> 
    </dependency> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${org.springframework.security-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${org.springframework.security-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${org.springframework.security-version}</version> 
    </dependency>  
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-core</artifactId> 
     <version>${org.springframework.social-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-facebook</artifactId> 
     <version>${org.springframework.social.facebook-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-twitter</artifactId> 
     <version>${org.springframework.social.twitter-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-web</artifactId> 
     <version>${org.springframework.social-version}</version> 
    </dependency> 

    <!-- Jersey + Spring --> 

    <dependency> 
     <groupId>com.sun.jersey.contribs</groupId> 
     <artifactId>jersey-spring</artifactId> 
     <version>1.8</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-web</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-beans</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 


    <!-- Apache Http Client --> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.1.2</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions>   
    </dependency> 

    <!-- JSR 303 with Hibernate Validator --> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.1.0.Final</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
     <scope>runtime</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.3.159</version> 
    </dependency> 

    <!-- CGLIB, only required and used for @Configuration usage --> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib-nodep</artifactId> 
     <version>2.2</version> 
    </dependency> 

    <!-- Apache Tiles --> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-el</artifactId> 
     <version>2.2.2</version> 
    </dependency> 

    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp.jstl</groupId> 
     <artifactId>jstl-api</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>jstl-impl</artifactId> 
     <version>1.2</version> 
    </dependency> 
</dependencies> 
<repositories> 
    <repository> 
     <id>org.springframework.maven.release</id> 
     <name>Spring Maven Release Repository</name> 
     <url>http://maven.springframework.org/release</url> 
     <releases><enabled>true</enabled></releases> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
    <!-- For testing against latest Spring snapshots --> 
    <repository> 
     <id>org.springframework.maven.snapshot</id> 
     <name>Spring Maven Snapshot Repository</name> 
     <url>http://maven.springframework.org/snapshot</url> 
     <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
    </repository> 
    <!-- For developing against latest Spring milestones --> 
    <repository> 
     <id>org.springframework.maven.milestone</id> 
     <name>Spring Maven Milestone Repository</name> 
     <url>http://maven.springframework.org/milestone</url> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
</repositories> 
<build> 
    <resources> 
     <resource> 
      <directory>src/main/java</directory> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>${java-version}</source> 
       <target>${java-version}</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <warName>spring-social-popup</warName> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>tomcat-maven-plugin</artifactId> 
      <version>1.1</version> 
     </plugin> 
    </plugins> 
</build> 

Die Fehlermeldung lautet: ERROR: org.springframework.web.context.ContextLoader - Kontext-Initialisierung fehlgeschlagen org.springframework.beans.factory .BeanCreationException: Fehler beim Erstellen von Bean mit dem Namen 'webMvcConfig' in der Datei [/Users/yousilin/workspace/9323/target/classes/org/springframework/social/popup/config/WebMvcConfig.class]: Initialisierung von Bean fehlgeschlagen; Verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen Bean mit Namen 'org.springframework.transaction.config.internalTransactionAdvisor' definiert in Klassenpfad Ressource [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: Instantiierung von Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanDefinitionStoreException: Factory-Methode [public org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor()] hat Ausnahme ausgelöst; verschachtelte Ausnahme ist java.lang.NoSuchMethodError: org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor.setAdvice (Lorg/aopalliance/aop/Beratung;) V Verwandte Ursache: org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen Bean mit Namen 'connectionFactoryLocator' definiert in BeanDefinition definiert in Klassenpfad Ressource [org/springframework/social/popup/config/SocialConfig.class]: Initialisierung von Bean fehlgeschlagen; Verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen Bean mit Namen 'org.springframework.transaction.config.internalTransactionAdvisor' definiert in Klassenpfad Ressource [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: Instantiierung von Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanDefinitionStoreException: Factory-Methode [public org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor()] hat Ausnahme ausgelöst; verschachtelte Ausnahme ist java.lang.NoSuchMethodError: org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor.setAdvice (Lorg/aopalliance/AOP/Beratung;) V

+0

Run 'mvn Abhängigkeit: Baum -Dverbose' Konflikte zu identifizieren. – axtavt

+0

Erzeugt Erfolg, scheiterte jedoch in der Kontextinitialisierung. –

+1

@StevenYou: Es ist nicht das Kompilierzeitproblem. Es sieht so aus, als ob einige Ihrer Abhängigkeiten alte Versionen von Spring-Modulen in den Klassenpfad (z. B. 2.x) ziehen, während Ihr Programm die neueste Version (3.x) verwendet. Zur Laufzeit verursacht dieses Chaos 'NoSuchMethodError'. Aus diesem Grund müssen Sie den Abhängigkeitsbaum prüfen. –

Antwort

8

hatte ich das gleiche Problem und in meinem Fall das Hinzufügen half AOP Abhängigkeit. Ich denke, es wird für bestimmte Teile der Spring-Sicherheit benötigt.

Versuchen Zugabe:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aop</artifactId> 
    <version>3.1.0.RELEASE</version> 
</dependency> 
+0

Arbeitete wie ein Charme. Vielen Dank! –

+0

@LukaszBachman, diese Lösung hat einmal für mich funktioniert, aber nach ein paar Änderungen zeigt sie wieder den gleichen Fehler. Meine POM.xml enthält immer noch diese Abhängigkeit und ich habe auch versucht, das Projekt zu aktualisieren. Kannst du mir bitte vorschlagen, was schief gehen könnte? –

+0

@ R.Rahul Ich würde vorschlagen, eine separate Frage zu SO mit aktuellen POM und detaillierte Fehlermeldung. Ich bin mir sicher, dass dir jemand in kürzester Zeit helfen kann. –