Escribo un servidor que incluye Jetty w/Jersey. Cuando ejecuto desde Eclipse, todo es genial. Sin embargo, si ensamblo mi servidor y todas las dependencias en un solo frasco utilizando el montaje de Maven: solo objetivo, consigo una excepción:excepción de jersey solo lanzada cuando las dependencias se ensamblan en un solo contenedor
Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java class com.acme.server.webservice.
exception.WebServiceFailure, and Java type class com.acme.server.webserv
ice.exception.WebServiceFailure, and MIME media type application/json was not fo
und
Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: The registered message body writers compatible with the MIME media type
are:
*/* ->
com.sun.jersey.server.impl.template.ViewableMessageBodyWriter
17:35:59.372 [qtp184245201-22 - /] ERROR o.a.h.ReflectorServletProcessor - onReq
uest()
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A mess
age body writer for Java class com.acme.server.webservice.exception.WebS
erviceFailure, and Java type class com.acme.server.webservice.exception.
WebServiceFailure, and MIME media type application/json was not found
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerRespons
e.java:285) ~[vma-server-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequ
est(WebApplicationImpl.java:1457) ~[server-0.0.1-SNAPSHOT-jar-with-dependenc
ies.jar:na]
...
La traza completa está aquí, si es útil: https://gist.github.com/3790817
Maven no arroja ningún error al crear el jar-with-dependencies.
Soy un principiante con Maven y el despliegue de Java, y realmente no estoy seguro de cómo proceder con la depuración.
Además, si bien necesito resolver este problema, también agradecería cualquier solución sugerida ya que necesito producir una demostración ejecutable de mi servidor lo antes posible que un Pointy-Haired Boss (tm) pueda ejecutar sin Eclipse.
Solución:
Sobre la base de la respuesta de Pavel, se me cayó el experto-assemly-plugin en favor del experto-sombra-plugin. Esta es la configuración de colores que funcionó para mí:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- use transformer to handle merge of META-INF/services - see http://java.net/jira/browse/JERSEY-440?focusedCommentId=14822&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_14822 -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
<filters>
<!-- filter to address "Invalid signature file" issue - see http://stackoverflow.com/a/6743609/589215-->
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
¿Es posible publicar las dependencias (relacionadas con jersey) definidas en su archivo pom? Tengo el mismo problema, pero ya estoy usando maven-shade-plugin. Cambiar a 'jersey-bundle' resolvió mi problema, pero me gustaría evitarlo y definir solo las dependencias necesarias en mi pom. – Athafoud
Esta solución funcionó para mí. Tenía exactamente el mismo problema. ¡¡¡¡Gracias!!!! – jmsimpson68