gpt4 book ai didi

java - Jersey 客户端,当使用 Maven 执行应用程序时使用 JAXBContext,但不使用 java -jar

转载 作者:行者123 更新时间:2023-11-29 06:20:20 25 4
gpt4 key购买 nike

我正在使用 Jersey 客户端 API 实现一个使用 json 数据的休息客户端。我对 JAXB 并没有多少经验,尤其是在与 JSON 的结合方面。我遵循了提供的示例 here并注册了一个 JAXBContext。

当我使用 mvn exec:java 执行项目时,一切都像魅力一样。

我使用 Maven 程序集插件创建单个 JAR。当我使用这个 JAR 文件运行客户端时,JAXBContext 似乎根本没有被使用。结果是:

“com.sun.jersey.api.client.ClientHandlerException:Java 类 org.digitest.model.Account、Java 类型类 org.digitest.model.Account 和 MIME 媒体类型的消息体读取器找不到应用程序/json”

有人知道我什么时候可能做错了吗?即使是关于如何进行调试的模糊提示也将不胜感激!

@Provider
public final class ModelJAXBContextResolver implements ContextResolver<JAXBContext> {

private final JAXBContext context;
private final Set<Class> types;
private final Class[] cTypes = {
Account.class, ...
};

public ModelJAXBContextResolver() throws Exception {
this.types = new HashSet(Arrays.asList(cTypes));
this.context = new JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
throw new Exception("Json context is loaded");
}

@Override
public JAXBContext getContext(Class<?> objectType) {
return (types.contains(objectType)) ? context : null;
}

}

客户端设置:

DefaultApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
config.getProperties().put(DefaultApacheHttpClientConfig.PROPERTY_HANDLE_COOKIES, true);
config.getClasses().add(ModelJAXBContextResolver.class);

client = ApacheHttpClient.create(config);

账号:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Account {
...
}

最佳答案

终于!这可能是我今年不得不应对的最烦人的事情!

添加 1.4-SNAPSHOT 版本的 jersey 依赖项解决了它。

    <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.2-SNAPSHOT</version>
</dependency>

关于java - Jersey 客户端,当使用 Maven 执行应用程序时使用 JAXBContext,但不使用 java -jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387345/

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