gpt4 book ai didi

java - 使用 Jersey deps 将应用程序打包到 jar 中时出现问题

转载 作者:行者123 更新时间:2023-11-29 03:31:01 24 4
gpt4 key购买 nike

我的小组为我们几乎所有的功能发布了可执行的 jar(不是小程序,只是为了清楚)。我们的新可执行文件之一是依赖于 Jersey 的 Web 服务客户端。我正在尝试使用自动 POJO 映射工具来解码响应(即,我在 ClientConfig 中将 JSONConfiguration.FEATURE_POJO_MAPPING 设置为 true)但是当我执行 jar 时,我得到“我不知道如何解码此响应”留言:

SEVERE:Java 类 edu.mit.broad.picard.bass.GetSite、Java 类型类 edu.mit.broad.picard.bass.GetSite 和 MIME 媒体类型 application/json 的消息体阅读器没有找到

如果我从我的 IDE (IntelliJ) 运行该应用程序,它就可以正常工作。我假设这是 jar 文件打包方式的问题,但我不知道 Jersey(或 Jackson,就此而言)的详细信息,无法解决此问题。有什么提示吗?

这是 Java 1.7、Jersey bundle 1.17.1 和 Jackson 1.9.13。所有 com/sun/**/*org/codehaus/**/* 文件都包含在 jar 中。

感谢您的帮助!

编辑:我检查了 META-INF 目录以获得所需的 .../services 目录。这是里面的内容:

cm59f-0fa:zamboni jrose$ jar tvf GenerateGetSite.jar | grep META-INF | grep services
0 Thu Aug 15 10:43:32 EDT 2013 META-INF/services/
0 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.server.impl.model.method.dispatch.ResourceMethodDispatchProvider
514 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.HeaderDelegateProvider
563 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.StringReaderProvider
147 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.container.ContainerProvider
60 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.container.ContainerRequestFilter
0 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.container.ContainerResponseFilter
377 Wed Feb 27 20:17:28 EST 2013 META-INF/services/com.sun.jersey.spi.container.ResourceMethodCustomInvokerDispatchProvider
376 Wed Feb 27 20:17:28 EST 2013 META-INF/services/com.sun.jersey.spi.container.ResourceMethodDispatchProvider
64 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.container.WebApplicationProvider
267 Thu Feb 28 15:29:04 EST 2013 META-INF/services/com.sun.jersey.spi.inject.InjectableProvider
44 Wed Feb 27 20:17:06 EST 2013 META-INF/services/javax.enterprise.inject.spi.Extension
882 Mon Dec 19 14:53:22 EST 2011 META-INF/services/javax.script.ScriptEngineFactory
79 Wed Feb 27 20:17:06 EST 2013 META-INF/services/javax.servlet.ServletContainerInitializer
2880 Thu Feb 28 15:29:04 EST 2013 META-INF/services/javax.ws.rs.ext.MessageBodyReader
2654 Thu Feb 28 15:29:04 EST 2013 META-INF/services/javax.ws.rs.ext.MessageBodyWriter
56 Thu Feb 28 15:29:04 EST 2013 META-INF/services/javax.ws.rs.ext.RuntimeDelegate`

最佳答案

我的猜测是您正在创建一个包含所有 jar 依赖项内容的 jar。如果是这种情况,问题可能是由于您的一个 jar 构造不当造成的。 Jersey 依赖 META-INF/services 中的资源来正常运行。您需要确保将 META-INF/services 的内容合并到您的一个 jar 中。

对我有用的一个选项是 maven-shade-plugin,它包括一个完全执行此合并的转换器:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
</plugin>

关于java - 使用 Jersey deps 将应用程序打包到 jar 中时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com