Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jersey客户端,当应用程序使用Maven执行时使用的JAXBContext,但不使用java-jar_Java_Json_Jaxb_Jersey - Fatal编程技术网

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

Jersey客户端,当应用程序使用Maven执行时使用的JAXBContext,但不使用java-jar,java,json,jaxb,jersey,Java,Json,Jaxb,Jersey,我正在使用Jersey客户端API实现一个使用json数据的rest客户端。我在JAXB方面没有太多经验,尤其是在与JSON结合方面。我遵循了提供的示例并注册了一个JAXBContext 当我使用mvn-exec:java执行项目时,一切都很顺利 我使用Maven汇编插件创建一个JAR。当我使用这个JAR文件运行客户机时,JAXBContext似乎根本没有被使用。其结果是: com.sun.jersey.api.client.clienthandler异常:未找到Java类org.digites

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

当我使用
mvn-exec:java
执行项目时,一切都很顺利

我使用Maven汇编插件创建一个JAR。当我使用这个JAR文件运行客户机时,JAXBContext似乎根本没有被使用。其结果是:

com.sun.jersey.api.client.clienthandler异常:未找到Java类org.digitest.model.Account、Java类型类org.digitest.model.Account和MIME媒体类型application/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;
    }

}
账户:

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

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

添加jersey依赖项的1.4快照版本解决了这个问题

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

泽西岛
球衣束
1.4-1
泽西岛
泽西json
1.4-1
com.sun.jersey.contribs
泽西apache客户端
1.4-1
com.sun.xml.bind
jaxb impl
2.2.2-快照
    <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>