当前位置: 首页 > 面试题库 >

仅在将验钞机组装到一个罐子中时才会引发球衣异常

顾烨磊
2023-03-14
问题内容

我正在写一个嵌入Jetty w /
Jersey的服务器。当我从Eclipse执行时,一切都很棒。但是,如果我使用Maven的assembly:single目标将服务器和所有依赖项组装到一个jar中,则会出现异常:

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]

如果有用的话,完整的跟踪记录在这里:https :
//gist.github.com/3790817

创建带有依赖的jar时,Maven不会出错。

我是Maven和Java部署的新手,我真的不确定如何进行调试。

另外,尽管我需要解决此问题,但我也感谢任何建议的解决方法,因为我需要尽快生成服务器的可执行演示,而无需使用Eclipse,就可以执行Pointy-
Haired Boss(tm)。

解:

根据Pavel的回答,我放弃了maven-assemly-plugin,转而使用maven-shade-plugin。这是对我有用的阴影配置:

        <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>

问题答案:

您没有正确合并球衣罐。

Jersey 1.x使用META-INF /
services机制来发现其组件和装配体:单个可能只是将所有内容复制到单个jar中,覆盖已存在的文件,但需要将META-INF /
services文件合并。

尝试使用jersey-bundle(com.sun.jersey:jersey-
bundle:1.14)或修复您的程序集设置(或查找另一个插件来做得更好)。



 类似资料:
  • 我已经尝试了将近一天,使用Maven将jar文件从Jersey部署到我们当地的人工制品厂。我对branch 2.6做了一些小改动。他们已经建造并包装了这些罐子。以下是来自泽西岛的家长pom摘录: 我有我的由artiFactory生成并放置在 但当我尝试使用进行部署时,我得到了以下结果: 我完整的settings.xml如下:

  • 我正在尝试通过jQuery POST将一些json数据发送到我本地机器中的jersey REST服务。 在我的服务器端,我有泽西方法来使用这个POST的JSON。 我正在请求中包装json数据。所以在服务器中,我可以在该包装类中获取请求中发送的所有数据。我的请求包装类是 问题pojo类 每当我从jquery发出如下请求时, 我在控制台中发现这个错误: 我可以通过从jQuery发送问题json并在方

  • 我有一个可完成期货的列表,我想从第一个期货开始,如果有任何完成例外,我想尝试列表中的下一个期货,依此类推,直到我耗尽了我所有的期货。如果任何一个期货成功了,我想就此止步,而不使用列表中的下一个期货。我如何做到这一点?到目前为止,我已经尝试过: 但是当我测试这种方法时,我看到当未来完成失败时,会抛出异常,并且不会尝试下一组期货。 编辑: 这就是样本的样子

  • 嗨,我正在尝试从Spring网站上做这个教程。http://spring.io/guides/gs/rest-service/ 在Eclipse M2E中将最终的Jar文件作为目标运行时,我得到了一个错误。 我有一个maven java核心项目。我成功地执行了“cleanpackage”命令,但在jar构建之后,我无法运行它。我在dos命令提示符下确认了jar是否运行正常,方法是将jar放在不同的

  • 问题内容: 我有一个很奇怪的问题。我正在Eclipse中研究Java SWING应用程序。我在代码中的某个地方设置了一个断点,然后运行调试。我执行包含断点的代码,但总是被跳过。一旦我运行了引发未捕获异常的代码,断点就会再次被击中,而无需进行其他任何更改。引发异常的代码与包含断点的代码无关。 我试图在多个地方设置断点,但是直到抛出异常,它们才被击中。我仅对这一特定应用程序有此问题。我的调试器可以在其

  • 我正在导出一个包含类的JAR: 和trialApplicationContext.xml: