cxf-codegen-plugin一直给我“生成类型失败”的错误信息

时间:2011-06-17 16:03:27

标签: web-services maven jaxb cxf wsdl2java

希望对此问题提出一些令人不安的反馈意见。

我使用maven构建一个简单的Web服务客户端应用程序。

它使用几个wsdls(大约8个)wsdls有xsd导入(每个请求和响应大约2个wsdl,加上大量额外的导入),使用maven cxf wsdl2java插件生成java代码。

我从插件版本2.1.7开始尝试了几个2.2.x,现在尝试使用插件的2.3.4版本。

这是我的pom文件的插件部分:

        <plugin>
              <groupId>org.apache.cxf</groupId>
              <artifactId>cxf-codegen-plugin</artifactId>
              <version>2.3.4</version>
              <executions>
                 <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <defaultOptions>
                            <noAddressBinding>true</noAddressBinding>
                        </defaultOptions>
                        <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
                        <includes>
                              <include>*.wsdl</include>
                         </includes>
                    </configuration>
                    <goals>
                       <goal>wsdl2java</goal>
                    </goals>
                 </execution>
              </executions> 
          </plugin>
      </plugins>

我可以提供以前版本的过去常用的方法。基本上我把每个wsdl列为&lt; wsdloption&gt;项目。

我唯一与“环境”相关的是,对于一个单独的项目,我删除了m2文件夹中的所有内容。从那时起,代码生成给了我以下错误消息(使用命令中的“mvn -e generate-sources”):

    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Failed to generate types.

    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to generate types.
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:584)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:500)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:479)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:331)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:292)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:301)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to generate types.
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:413)
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:362)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:453)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:559)
            ... 16 more
    Caused by: org.apache.cxf.tools.common.ToolException: Failed to generate types.
            at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:745)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:599)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:247)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:138)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:290)
            at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
            at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
            at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:410)
            ... 19 more

我注意到的一件事是,在target / generated-sources文件夹中,它在\ generated-sources \ cxf \ generated AND \ generated-sources \ org \ opentravel \ ota_2003_05中创建了相同的类。不完全确定XSD或wsdl本身是否存在错误。

我已经找到了错误的一个很好的解释,还没有找到解决方案。我已经为这个特殊问题做了“谷歌搜索”的公平分享。开始变得绝望,希望我能尽快找到解决方案。

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

我不时会看到这一点,当我使用cxf java插件时,我认为cxf.maven.wsdl2javaMojo内存不足。

在这种情况下,

  • 我建议你将每个wsdl生成分解为子模块,
  • 增加maven记忆
  • 如果它仍然在中间停止尝试使用mvn Goals -rf:WhereStops命令,那么它从耗尽内存的子模块开始,因此你不必重新开始。< / LI>

注意我使用Maven 3.2 如果你不确定-rf如何工作google mvn -rf

答案 1 :(得分:0)

不太确定。我只是查看了该行号的代码,不幸的是,刚发现它在那时完全吞下了IOException。因此,我不知道如何获得IOException的真正“原因”。我要解决这个问题并将其提交到trunk。如果您可以在明天或星期一(在每晚部署版本之后)重试最新快照,它应该可以提供更好/完整的错误消息。