Maven 的 Jersey 问题 - Shade 插件

2024-03-02

我的问题非常类似于:仅当依赖项组装到单个 jar 中时才会抛出 Jersey 异常 https://stackoverflow.com/questions/12611213/jersey-exception-only-thrown-when-depencencies-assembled-into-a-single-jar

我运行我的应用程序(jetty嵌入+球衣)并且一切正常。当我尝试创建可执行 JAR 时,出现错误:

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor 围绕写入 GRAVE:找不到媒体类型 = application/json、类型 = 类的 MessageBodyWriter

我的 POM.XML:

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>server.application.DeepDig</mainClass>
                                </transformer>
                            </transformers>

                            <filters>
                                <!-- filter to address "Invalid signature file" issue - see https://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>
        </plugins>

不久前我遇到了同样的问题。问题在于服务文件未合并。以下对我有用:

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

问题的根本原因是,几个与 Jersey 相关的 jar 文件中的每一个都在 META-INF 中包含一个“服务”文件,其中包含用于 Jersey 正常工作的元数据。默认情况下,shade 插件会选择这些文件之一并将其包含在 fat jar 中。由于不包含其他文件的元数据,Jersey 无法正常工作。

此修复包括调用阴影插件时的附加变压器。该转换器合并各个文件中的数据,而不是仅选择其中一个文件。这样,所有必需的元数据都包含在 fat jar 中,并且 Jersey 可以正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 的 Jersey 问题 - Shade 插件 的相关文章

随机推荐

  • Jquery改变背景颜色

    我正在用这个例子尝试jquery document ready function button mouseover function p 44 test css background color yellow p 44 test hide
  • Perl 的类似 Lint 的程序?

    我正在寻找 Perl 的 lint 它可以捕获死代码和其他潜在问题 有什么建议么 I have use strict use warnings 已经有了 但我想要更多 Perl 评论家 http search cpan org perldo
  • li或dl中嵌套div的HTML5标准

    我知道 HTML5 中不允许在 li 中嵌套 div 尽管可以并且它可以工作 这是否意味着我不应该使用它 dls中嵌套div的标准是什么 此信息不正确 div元素被视为flow content https html spec whatwg
  • 如何通过 cpanel/whm API 创建数据库?

    我有 API 在专用服务器上为用户创建帐户 创建电子邮件地址也很好 但是当我尝试通过 API 创建 mysql 数据库时 我收到错误消息 访问被拒绝 即使访问是 root 我尝试使用的代码 xmlapi new xmlapi host xm
  • Asp.Net MVC 每个请求的唯一 ID

    在我们的 MVC 5 站点中 没有会话 我们需要为每个请求获取 生成一个唯一的 ID 这将用作记录请求中所有活动的 ID 有没有办法为请求分配 获取值以启用此功能 将其添加到请求项集合 odetocode com articles 111
  • iOS 7、iPhone、接近传感器

    这是一个简短的问题 但它困扰了我整整一个晚上 我这里有一些自己的应用程序 我只编写 Objective C 并且使用 ARC 如果我在 appDelegate 中编写 application didFinishLaunching UIDev
  • JavaScript 实例化

    你能在下面的例子中告诉我为什么吗sub instanceof Super is false function Super var obj prop1 value1 return obj var sub new Super sub insta
  • 带变量的 iframe 源

    我有一些问题 Is 与 HTMLIFrameElement 相同吗 Why 工作正常 但是 a document getElementsByTagName body 0 b document createElement iframe b s
  • 模块“PDO”已加载到未知行 0

    我将 nginx 与 php5 fpm 一起使用 由于某种原因 我的 php5 fpm 一直说 模块 PDO 已经加载到未知的第 0 行 老实说 我不知道为什么 该扩展不会加载到 php ini 内部 而是从 with config fil
  • 溢出隐藏隐藏下拉菜单,但将溢出隐藏隐藏在隐藏导航背景中

    首先 这是一个 js 小提琴 http jsfiddle net B6DSv http jsfiddle net B6DSv 我遇到的问题是我的 css nav overflow hidden THIS LINE background co
  • ASP.NET WebApi DateTimeOffset 序列化为 Json/JavaScript (angular2)

    我没有找到一个很好的方法来获取 JavaScript Angular2 的 DateTimeOffset 值 我正在使用 WebApi 5 2 3 和 angular2 在网上我看到日期如下 RecordModifiedAt 2016 03
  • OpenGL ES 2.0 中的光线拾取

    我正在尝试在 OpenGL ES 2 0 中实现光线拾取以确定是否已单击对象 到目前为止 我只是想检查是否已按下特定的三角形 我使用这个网站作为动力http android raypick blogspot ca 2012 04 first
  • CodeIgniter 仅允许在登录时访问某些控制器

    我有一些 CodeIgniter 控制器 只能由已登录的用户访问 即 this gt session gt userdata username 不为空 如果未经身份验证的人尝试访问所述控制器 他们应该收到 header location a
  • chromedriver:ubuntu 14.04 64 位上缺少各种 lib 依赖项

    所以我尝试运行从下载的 chromedriver 2 20 wget http chromedriver storage googleapis com 2 20 chromedriver linux64 zip 在我的 ubuntu 14
  • 如何向 UILabel 添加填充? [复制]

    这个问题在这里已经有答案了 UILabel 内的文本与左边框和右边框相冲突 有没有办法向 UILabel 添加一些内部填充 以便文本不会如此紧密地接触内部边框 只需调整标签的位置 我不知道任何其他方法 尽管其他人可能会 如果您对背景颜色有疑
  • OpenXML:Excel 中自动调整列宽

    我已经编写了使用 OpenXML 生成 Excel 文件的代码 下面是在 Excel 中生成列的代码 Worksheet worksheet new Worksheet Columns columns new Columns int num
  • HistoryRecord 的活动空闲超时?

    W ActivityManager 81 Launch timeout has expired giving up wake lock W ActivityManager 81 Activity idle timeout for Histo
  • log4j:记录包,但不包括其子包

    您好 我想排除某些子包被我的一个记录器记录 因为它们正在被另一个记录器记录 例如 com mysite app logger1 com mysite app news logger2 com mysite app events logger
  • 如何使用 ASP.NET MVC 将字典绑定到一组复选框?

    我的需要是 绑定 Dictionary
  • Maven 的 Jersey 问题 - Shade 插件

    我的问题非常类似于 仅当依赖项组装到单个 jar 中时才会抛出 Jersey 异常 https stackoverflow com questions 12611213 jersey exception only thrown when d