2012-03-17 11 views
5

A pesar de este proyecto después de haber trabajado para mí durante un tiempo, ahora estoy consiguiendo una excepción cuando intento de desplegar mi contexto de aplicación en Tomcat:Spring MVC: ¿por qué la excepción NoSuchMethodError al desplegar el contexto?

Servlet /testapp threw load() exception 
java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V 
    at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62) 

Por lo que he leído, esto puede ocurrir si hay hay varias versiones de Spring que se están compilando en la aplicación. Sin embargo, he purgado por completo mi repositorio de dependencias local para confirmar que solo tengo la versión que quiero en mi ruta de compilación. Mis dependencias son las siguientes:

<properties> 
    <java-version>1.6</java-version> 
    <org.springframework.version>3.1.0.RELEASE</org.springframework.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    </properties> 

    <dependencies> 
    <!-- CGLIB, only required and used for @Configuration usage --> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib-nodep</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-core-asl</artifactId> 
     <version>1.9.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-eclipse-plugin</artifactId> 
     <version>2.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework.version}</version> 
     <optional>false</optional> 
    </dependency> 
    <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</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    </dependencies> 

no tengo errores de compilación en el proyecto Eclipse y se construye a la perfección, sin advertencias o errores. Sin embargo, Tomcat está marcando que mi único servlet de prueba no está disponible y cuando hago cola en los registros, el stacktrace de arriba es mi única pista.

Cualquier ayuda que cualquiera pueda ofrecer sería muy apreciada. Mi experiencia con Spring y Spring MVC es mínima, así que espero que esto sea simplemente un problema para principiantes que se me haya escapado por completo.

+2

Lo primero que hago cuando empiezo a ver errores misteriosos es purgar el directorio de trabajo de tomcat ... vale la pena intentarlo – nickdos

+0

¡Excelente consejo! Esto me ayudó a identificar el problema, ¡muchas gracias! – mchandler

Respuesta

2

Gracias a @nickdos por ofrecer un consejo. Los cambios en mi pom.xml que inicialmente me causaron problemas fueron eliminados y purgar mi directorio de trabajo me devolvió la vida. Sin embargo, mi problema inicial fue el resultado de conflictos introducidos al incluir jarras de Jersey en mi proyecto.

Mi proyecto estaba haciendo uso de Spring v3.x, pero las jarras de Jersey incluían una dependencia de Spring 2.5, lo que generaba conflictos. Para remediar este problema, declaré algunas exclusiones de la siguiente manera:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>${com.sun.jersey.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>${com.sun.jersey.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>${com.sun.jersey.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey.contribs</groupId> 
    <artifactId>jersey-spring</artifactId> 
    <version>${com.sun.jersey.version}</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> 

El comentario de @nickdos traído mi proyecto de copia de seguridad a la velocidad sin la inclusión de Jersey, y declarando las exclusiones, que ahora tiene soporte tanto para la primavera Soporte MVC y Jersey REST sin la excepción load() que estaba informando antes.

¡Gracias a todos!

Cuestiones relacionadas