我的jar中缺少标准的邮件正文阅读器提供程序

yan*_*ann 2 java client jersey

我现在必须错过两天的东西......

我有一个简单的jar应用程序,它使用泽西客户端jar.当我从Eclipse或mvn exec运行我的主类时,一切都很顺利.

当我构建我的jar然后用java -jar运行它,我得到:

com.sun.jersey.api.client.ClientHandlerException:未找到Java类java.lang.String和Java类型类java.lang.String以及MIME媒体类型application/json的消息正文阅读器

即我的客户提供者列表中缺少所有标准Java类型的体读者提供者.

我在客户端的pom.xml依赖项中声明:

  • 球衣的客户端
  • 球衣核心
  • 球衣,JSON
  • 球衣服务器
  • 杰克逊映射器,ASL
  • 杰克逊核心-ASL
  • 球衣-多

使我的应用程序工作的唯一方法是在我的客户端配置中声明StringProvider类...

config.getClasses().add(StringProvider.class);
Run Code Online (Sandbox Code Playgroud)

但是这个提供程序的解除只能是自定义bean所必需的吗?标准bean提供程序默认是可访问的?不是吗?

Mas*_*ant 7

我发现它差不多一年后发现,但事实证明我的问题是由于使用阴影将所有东西合并到一个罐子里.添加几个变压器似乎已经解决了问题.我的阴影插件现在看起来像这样:

         <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>
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.