Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
在CXF wsdl2java中设置Java遵从性级别_Java_Cxf_Wsdl2java - Fatal编程技术网

在CXF wsdl2java中设置Java遵从性级别

在CXF wsdl2java中设置Java遵从性级别,java,cxf,wsdl2java,Java,Cxf,Wsdl2java,我是CXF的新手,正在尝试从WSDL创建客户机。我过去使用过地铁和安讯士。我下载了apache-cxf-2.3.3,并使用wsdl2java生成客户端存根。我使用Maven并使用以下内容设置pom: <properties> <cxf.version>2.3.3</cxf.version> </properties> <dependencies> <dependency> <groupI

我是CXF的新手,正在尝试从WSDL创建客户机。我过去使用过地铁和安讯士。我下载了apache-cxf-2.3.3,并使用wsdl2java生成客户端存根。我使用Maven并使用以下内容设置pom:

<properties>
    <cxf.version>2.3.3</cxf.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-security</artifactId>
        <version>${cxf.version}</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
                <optimize>true</optimize>
                <debug>true</debug>
            </configuration>
        </plugin>
    </plugins>
</build>

问题似乎与以下事实有关:生成的代码使用Java 6特性(“require”元素用于XmlElementRef,新的服务构造函数),而CXF Maven依赖项用于Java 5

有没有办法指定生成的代码应该与Java 5兼容?

没有提到任何用于指定Java版本的选项

您可以尝试使用Maven生成客户机存根,这应该尊重Maven编译器的源版本和目标版本

如果这不起作用,您可以通过更改pom中的源代码行和目标行,将Maven配置为使用Java 6,如下所示:

               <source>1.6</source>
               <target>1.6</target>
1.6
1.6

实际上,CXF的wsdl2java命令行工具与Java 5兼容的代码可能与Java 6不兼容。原因是它生成的代码与JAX-WS2.2和JAXB2.2兼容。然而,Java6中包含的这些API的版本只有2.1

有几种选择:

1) 最简单的方法是将“-fe jaxws21”添加到wsdl2java命令中,使其生成符合jaxws 2.1而不是2.2的代码

2) 将2.2 api JAR添加到JDK的认可目录中


3) 在maven中配置编译器插件以“认可”2.2 jars

我认为Glassfish没有wsdl2java版本。我在生成Metro客户端时使用了wsimport。Axis有一个wsdl2java,但我目前没有安装它。使用cxf codegen插件创建相同的Java 6代码。对不起,你说得对。Metro版本的导入是
wsimport
。感谢您对兼容性和使用-fe选项的说明。上的描述没有很好地解释它,可以指定使用哪个jax-ws版本。要为JDK8设置哪个版本的前端?目前在我的lagacy项目中设置了jaxws21,但它看起来已经过时了
[ERROR] \Devel\Projects\Client-CXF\src\main\java\my\snmpv2\MyService.java:[76,8] cannot find symbol
[ERROR] symbol  : constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[])
[ERROR] location: class javax.xml.ws.Service
               <source>1.6</source>
               <target>1.6</target>