2015-10-20 161 views
0

首先,我使用java创建了简单的Web服务,然后为该Web服务生成了wsdl并使用SoapUI进行了测试,因此工作正常。之后,现在我正在从之前生成的wsdl文件生成java类。无法从wsdl文件生成java代码

这是我的pom.xml文件配置。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
     <parent> 
      <artifactId>webService</artifactId> 
      <groupId>WebService</groupId> 
      <version>1.0-SNAPSHOT</version> 
     </parent> 
     <modelVersion>4.0.0</modelVersion> 

     <artifactId>contractFirst</artifactId> 
     <packaging>jar</packaging> 

     <name>contractFirst</name> 
     <url>http://maven.apache.org</url> 

     <properties> 
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
      <cxf.version>2.2.3</cxf.version> 
     </properties> 
     <build> 
      <!-- Generate Java classes from WSDL during build --> 
      <plugins> 
      <plugin> 
       <groupId>org.apache.cxf</groupId> 
       <artifactId>cxf-codegen-plugin</artifactId> 
       <version>${cxf.version}</version> 
       <executions> 
        <execution> 
         <id>generate-sources</id> 
         <phase>generate-sources</phase> 
         <configuration> 
          <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot> 
          <wsdlOptions> 
           <wsdlOption> 
            <wsdl>${basedir}/src/main/resources/OrderProcess.wsdl</wsdl> 
            <extraargs> 
             <extraarg>-server</extraarg> 
            </extraargs> 
           </wsdlOption> 
          </wsdlOptions> 
         </configuration> 
         <goals> 
          <goal>wsdl2java</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <!-- Add generated sources - avoids having to copy generated sources to build location --> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>${basedir}/target/generated/src/main/java</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <!-- Build the JAR with dependencies --> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 

     </build> 


    </project> 

当我试图生成它时,我得到这样的错误。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project contractFirst: Compilation failure: Compilation failure: 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/OrderProcessService.java:[24,1] error: annotations are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable annotations) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/OrderProcessService.java:[73,61] error: variable-arity methods are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable variable-arity methods) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/ProcessOrderResponse.java:[29,1] error: annotations are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable annotations) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/ObjectFactory.java:[24,1] error: annotations are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable annotations) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/ObjectFactory.java:[66,22] error: generics are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable generics) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/Order.java:[31,1] error: annotations are not supported in -source 1.3 
    [ERROR] 
    [ERROR] (use -source 5 or higher to enable annotations) 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/ProcessOrder.java:[28,1] error: annotations are not supported in -source 1.3 
    [ERROR] 

,所以我不understed这是什么- 源5的事情是?

更新:根据@ Simze的回答,上面的错误消失了。现在我正在将这个错误汇总起来。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project contractFirst: Compilation failure 
    [ERROR] /home/contractFirst/target/generated/src/main/java/demo/order/OrderProcess_OrderProcessPort_Server.java:[17,34] cannot find symbol 
    [ERROR] symbol: class OrderProcessImpl 
    [ERROR] location: class demo.order.OrderProcess_OrderProcessPort_Server 
    [ERROR] -> [Help 1] 
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project contractFirst: Compilation failure 
    /home/contractFirst/target/generated/src/main/java/demo/order/OrderProcess_OrderProcessPort_Server.java:[17,34] cannot find symbol 
     symbol: class OrderProcessImpl 
     location: class demo.order.OrderProcess_OrderProcessPort_Server 

wsdl文件

+0

你正在使用哪个版本的maven? –

+0

我正在使用maven 3.0.5和java 1.7 – GPrathap

+0

您是否正确设置了JAVA_HOME? –

回答

0

你得到,因为该错误,你想的Java 1.3,它不支持注解下运行Maven。请在<build>元素下添加下面的标签,以解决您的问题。

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.0</version> 
     <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     </configuration> 
    </plugin> 
</plugins> 
+0

添加此插件后,以前的错误消失。但我得到了另一个错误。更新后的问题 – GPrathap

+0

然后你需要发布正确的代码来解决这个问题?你是否宣布了这个变量? –

+0

我应该添加wsdl文件吗? – GPrathap

0

您需要使用Java 1.5或更高版本。这就是编译器错误告诉你什么时候说的 - 源码5的东西,因为从Java 1.5开始向Java添加了注释支持。

1

终于找到了解决方案。 当我们给定的WSDL文件生成Java代码,我们需要指定什么在CXF-CODEGEN-插件的配置部分中产生

... 
    <wsdlOptions> 
    <wsdlOption> 
     <wsdl>${basedir}/src/main/resources/OrderProcess.wsdl</wsdl> 
     <extraargs> 
      <extrrg>-impl</extrrg> 
      <extrrg>-server</extrrg> 
     </extraargs> 
    </wsdlOption> 
    </wsdlOptions> 
..... 

这里-impl意味着这将生成服务实现类和-server用于生成可用于公布该服务的服务器组件。