我肯定错过了两天的时间.
我有一个简单的jar应用程序,它使用的是一个球衣客户端jar。当我从Eclipse或mvn运行我的主类时,一切都很好。
当我构建jar然后使用java -jar运行它时,我得到:
未找到用于Java类com.sun.jersey.api.client.ClientHandlerException:、Java类java.lang.String和MIME媒体类型java.lang.String /json的消息体阅读器
也就是说,我的客户端提供程序列表中缺少了所有标准Java类型、正文读取器提供者。
我在客户端的pom.xml依赖项中声明如下:
使我的应用程序工作的唯一方法是在我的客户端配置中声明StringProvider类.
config.getClasses().add(StringProvider.class);但是这个提供者解密必须只对自定义bean有必要吗?默认情况下,标准bean提供程序是可访问的?不是吗?
发布于 2012-11-07 23:15:10
我发现这几乎是在它发布一年后,但事实证明,我的问题是由于合并到一个单一的罐子使用阴影。再增加几台变压器似乎已经修好了。我的遮阳插件现在看起来是这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.sandwormz.jettycore.NotezWebsocketMain</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>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/javax.ws.rs.ext.MessageBodyReader</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/javax.ws.rs.ext.MessageBodyWriter</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.sandwormz.jettycore.NotezWebsocketMain</mainClass>
</transformer>
</transformers>
<filters>
<filter>
This is required if we want anything build on top of this
to
compile without security errors.
<artifact>*</artifact>
<excludes>
<exclude>**/*.MF</exclude>
<exclude>**/*.SF</exclude>
<exclude>**/*.DSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>希望这能帮上忙。
发布于 2011-11-07 18:49:04
您是否将所有的类捆绑在一个jar中(包括来自jersey模块的类)?如果是这样的话,那么看起来您丢失了一些META文件,或者您合并了它,使一个模块中的一个同名文件覆盖了来自其他模块的同名文件。
https://stackoverflow.com/questions/8039126
复制相似问题