gpt4 book ai didi

java - "JAX-RS MessageBodyWriter not found for media type=application/json"执行 jar 但 mvn :exec works

转载 作者:行者123 更新时间:2023-11-30 06:56:57 24 4
gpt4 key购买 nike

我在尝试打包我的 Maven 项目时遇到问题。我使用 mvn:exec 开发并测试了它,一切正常。使用以下 pom.xml 我生成了具有依赖项的 jar 文件(使用 mvn 包)。应用程序启动正常,但是当我向日志中的 JAX-RS web 服务发送请求时,我得到了这个:

[2015-11-25 16:55:05] [org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo] SEVERE: MessageBodyWriter not found for media type=application/json, ....

对于像字符串或整数这样的简单对象,在客户端,我得到了 json 的“415 - 不支持的媒体类型”。

我已经尝试将 json-media-moxy 添加到依赖项或使用 java -cp 而不是 -jar 执行 jar,但没有任何效果。

这是我的pom:

[...]
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
[...]
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>it.project.Application</mainClass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>it.project.Application</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<properties>
<jersey.version>2.22</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

解决了!只是添加

rc.register(JacksonFeature.class);

到我的 ResourceConfig 来让事情正常进行。我不知道为什么但是使用 mvn package 和 jar 执行 jersey 不执行自动发现,所以 jackson 没有注册。

最佳答案

尝试添加这个依赖(适应你的 Jersey 版本)

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.22</version>
</dependency>

我想没有 jersey 所需的库来处理 maven 依赖项中的 json 数据

更新

我的错误,我刚刚看到你已经有了它。你是如何处理你的请求的?与自定义客户端?如果您使用的是自定义客户端,请试试这个

Client client = ClientBuilder.newClient().register(JacksonFeature.class);

关于java - "JAX-RS MessageBodyWriter not found for media type=application/json"执行 jar 但 mvn :exec works,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33921252/

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