Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
Java 当类处于依赖项中时,JAXBContext.newInstance不工作_Java_Jaxb - Fatal编程技术网

Java 当类处于依赖项中时,JAXBContext.newInstance不工作

Java 当类处于依赖项中时,JAXBContext.newInstance不工作,java,jaxb,Java,Jaxb,因此,正如标题所暗示的,我在一个项目中工作,在我调用一个API之后,这个API将设置一个Web服务调用,在API调用WS之后,它将发送回(我自己的应用程序)响应。 我需要将响应记录为XML。因此,经过一些搜索,我最终得到了代码: Marshaller marshaller = JAXBContext.newInstance( vhu.ReqDeclareObject.class ).createMarshaller(); 我的应用程序API WS POM(包含

因此,正如标题所暗示的,我在一个项目中工作,在我调用一个API之后,这个API将设置一个Web服务调用,在API调用WS之后,它将发送回(我自己的应用程序)响应。 我需要将响应记录为XML。因此,经过一些搜索,我最终得到了代码:

 Marshaller marshaller = JAXBContext.newInstance(
            vhu.ReqDeclareObject.class
    ).createMarshaller();
我的应用程序API WS

POM(包含VHU包的依赖项):

我做了一个简单的测试,试图理解错误。我将所有JAXB生成的类复制到我的项目中,并运行与上面相同的代码,但这次打包的类在我自己的项目中

  Marshaller marshaller = JAXBContext.newInstance(
            ReqDeclareObject.class
    ).createMarshaller();
在这里,应用程序运行良好

将所有JAXB生成的类处理到项目中并不是可行的长期解决方案。我需要能够创建一个封送拆收器,而无需将所有类都引入到项目中

谢谢你的帮助。

(因为我没有太多的观点,所以我无法发表评论,因此,如果没有帮助,请发帖子作为回答,很抱歉)

我没有在
JAXB
方面做过很多工作,但对
MOXY
有相当的了解,它是建立在
JAXB
实现之上的

  • 对于类处于依赖关系,您的意思是
    类A扩展类B
    ,并且您正在尝试使用
    JAXB
    封送类A

  • 您是否尝试将
    本身传递给
    封送拆收器
    实例?像这样的

  • Marshaller-Marshaller=JAXBContext.newInstance(“io.model.jaxb”).createMarshaller()

    这样,您就需要
    ObjectFactory
    。如有兴趣,请参阅:


    如前所述,我只是想谈谈我对这个问题的看法,不确定这是否有帮助。

    最后我找到了一个解决方案,它不是我的,但我在这里为其他有同样问题的人分享

    这个线程似乎与问题没有多大关系,但有一个答案解决了我的问题


    在我的例子中,我刚刚在VM环境选项中添加了链接中所述的属性。

    1-我改进了这个问题,以便您和其他人能够更好地理解这个问题,2-这就是我在示例中试图做的
    vhu.ReqDeclaredObject$JaxbAccessorF_control cannot be cast to com.sun.xml.bind.v2.runtime.reflect.Accessor
    
      Marshaller marshaller = JAXBContext.newInstance(
                ReqDeclareObject.class
        ).createMarshaller();