Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 org.apache.cxf.binding.soap.SoapHeader不能强制转换为org.apache.cxf.binding.soap.SoapHeader_Java_Maven_Jboss_Soapheader - Fatal编程技术网

Java org.apache.cxf.binding.soap.SoapHeader不能强制转换为org.apache.cxf.binding.soap.SoapHeader

Java org.apache.cxf.binding.soap.SoapHeader不能强制转换为org.apache.cxf.binding.soap.SoapHeader,java,maven,jboss,soapheader,Java,Maven,Jboss,Soapheader,我在JBOSS EAP 6.2上安装了一个Web服务。当我想要获取SOAP头时出现问题 代码,其中引发异常: ArrayList<SoapHeader> hl = (ArrayList<SoapHeader>) wsctx.getMessageContext().get("org.apache.cxf.headers.Header.list"); String username = ""; String password = ""; for (

我在JBOSS EAP 6.2上安装了一个Web服务。当我想要获取SOAP头时出现问题

代码,其中引发异常:

 ArrayList<SoapHeader> hl = (ArrayList<SoapHeader>) wsctx.getMessageContext().get("org.apache.cxf.headers.Header.list");
    String username = "";
    String password = "";

    for (int i = 0; i < hl.size(); i++) { //for(SoapHeader header : hl) gives this same exception
        SoapHeader header = hl.get(i);
        //here is fetching data from this header. Not important to this case.
    }
例外信息是:

 org.apache.cxf.binding.soap.SoapHeader cannot be cast to org.apache.cxf.binding.soap.SoapHeader
起初,我认为Maven的POM文件中的版本错误,因此:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-bindings-soap</artifactId>
        <version>2.4.2</version>
    </dependency>

org.apache.cxf
cxf rt绑定soap
2.4.2
但我认为它很管用


所以我的问题是:如何避免它?有人能帮我吗?谢谢

可能存在间接依赖关系。您的一个模块或库也可能具有依赖关系
org.apache.cxf

尝试找出是否有多个版本。最简单的方法是检查所有目标dir并找到所有jar。然后比较版本并排除不正确的版本

  <exclusions>
    <exclusion>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-bindings-soap</artifactId>
      <version>2.4.2</version>
    </exclusion>
  </exclusions>

org.apache.cxf
cxf rt绑定soap
2.4.2

另外,JBoss也可能以某种方式拥有该库。

找到了解决方案,只需添加其他库,而不是通常的apache cxf绑定:

    <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jboss-jaxws</artifactId>
        <version>2.0.1.SP2</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.ws.cxf</groupId>
        <artifactId>jbossws-cxf-server</artifactId>
        <version>4.2.0.Alpha1</version>
        <scope>provided</scope>
    </dependency>

org.jboss
jboss jaxws
2.0.1.SP2
org.jboss.ws.cxf
jbossws-cxf服务器
4.2.0.1
假如

我找不到正确的版本。我查看了,但只有指定的JBoss WS_CXF。也许我应该使用它而不是原始的apache库?是的,你是对的,但真正的解决方案是使用其他库:jboss cxf server。谢谢你的提示!
    <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jboss-jaxws</artifactId>
        <version>2.0.1.SP2</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.ws.cxf</groupId>
        <artifactId>jbossws-cxf-server</artifactId>
        <version>4.2.0.Alpha1</version>
        <scope>provided</scope>
    </dependency>