Sto scrivendo un server che incorpora Jetty w/Jersey. Quando eseguo da Eclipse, è tutto fantastico. Tuttavia, se assemblare il mio server e tutte le dipendenze in un unico vaso utilizzando il montaggio di Maven: unico obiettivo, ottengo un'eccezione:Eccezione jersey generata solo quando le dipendenze sono state assemblate in un singolo barattolo
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 traccia completa è qui, se è utile: https://gist.github.com/3790817
Maven non genera errori durante la creazione di jar-with-dependencies.
Sono un debuttante con Maven e l'implementazione di Java e non sono sicuro di come procedere con il debug.
Inoltre, anche se ho bisogno di risolvere questo problema, apprezzerei anche qualsiasi soluzione suggerita poiché ho bisogno di produrre una demo eseguibile del mio server ASAP che un Boss a punta di capelli (tm) possa eseguire senza Eclipse.
Soluzione:
in base alla risposta di Pavel, ho lasciato cadere l'esperto-assemly-plugin a favore di Maven-ombra-plugin. Ecco la configurazione del colore che ha funzionato per me:
<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>
È possibile pubblicare le dipendenze (relative alla jersey) definite nel file pom? Ho lo stesso problema, ma sto già usando il plugin maven-shade-plugin. Passare a 'jersey-bundle' ha risolto il mio problema, ma vorrei evitare di definire solo le dipendenze necessarie nel mio pom. – Athafoud
Questa soluzione ha funzionato per me. Ho avuto esattamente lo stesso problema. Grazie!!!! – jmsimpson68