Idea de evitar esa primavera.manipuladores / muelle.los esquemas se sobrescriben cuando se fusionan varias dependencias de primavera en un solo jar
Recibí el error Unable to locate NamespaceHandler when using context:annotation-config
ejecutando (java-jar) un jar ensamblado por el plugin maven-assembly y conteniendo mi proyecto y todas sus dependencias.
Como otras personas vieron correctamente en el forum.springsource.org thread (mensaje #7/8) el problema ocurre porque los archivos META-INF/spring.handlers
y META-INF/spring.schemas
que están presentes en diferentes jars, se sobrescriben cuando el maven-assembly-plugin vuelve a empaquetar los jars en un solo archivo.
Mirando el contenido de dos spring-*.archivos jar que puede ver los archivos se encuentra en la misma posición relativa a la classpath
$ jar tf spring-oxm-3.0.3.RELEASE.jar
META-INF/spring.handlers
META-INF/spring.schemas
org/springframework/oxm/GenericMarshaller.class
...
$ jar tf spring-context-3.0.3.RELEASE.jar
META-INF/spring.handlers
META-INF/spring.schemas
org/springframework/context/ApplicationContext.class
¿No es posible poner la carpeta META-INF en un paquete específico? Si es así, la idea que sugeriría, (espero que sea aplicable) es poner los archivos META-INF/spring.shemas
y META-INF/spring.handlers
bajo el paquete al que se refieren.
$ jar tf spring-oxm-3.0.3.RELEASE.jar
org/springframework/oxm/META-INF/spring.schemas
org/springframework/oxm/META-INF/spring.handlers
org/springframework/oxm/GenericMarshaller.class
...
$ jar tf spring-context-3.0.3.RELEASE.jar
org/springframework/context/META-INF/spring.handlers
org/springframework/context/META-INF/spring.schemas
org/springframework/context/ApplicationContext.class
De esta manera no entrarán en conflicto cuando se fusionen en un solo frasco. ¿Qué te parece?
1 answers
Me las arreglé para deshacerme del error usando el complemento shader en lugar del complemento ensamblador (con errores):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>at.seresunit.lecturemanager_connector.App</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Creo que encontré la solución en los foros de springsource.. ha pasado bastante tiempo desde que lo busqué.. realmente no puedo recordar al autor. Felicitaciones a él de todos modos: p
Salud
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-21 09:51:50