2

しばらくの間悩まされてきたこの問題について、何らかのフィードバックを期待しています。

シンプルな Web サービス クライアント アプリケーションを構築するために maven を使用しています。

いくつかの wsdl (約 8) を使用し、wsdls には xsd インポート (要求と応答ごとに wsdl ごとに約 2 つと、かなりの量の追加のインポート) があり、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 を < wsdloption > 項目としてリストしました。

私が「環境」関連で行った唯一のことは、別のプロジェクトで 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

私が気づいたことの 1 つは、target/ generated-sources フォルダーで、\ generated-sources\cxf\ generated AND \ generated-sources\org\opentravel\ota_2003_05 に同じクラスを作成することです。XSD または wsdl 自体にエラーがあるかどうかは正確にはわかりません。

エラーの適切な説明を探しましたが、まだ解決策が見つかりません。この特定の問題について、かなりの割合で「グーグル」を実行しました。必死になり始めて、すぐに解決策を見つけられることを願っています。

ご協力いただきありがとうございます。

4

2 に答える 2

1

cxf Java プラグインを使用しているときに、cxf.maven.wsdl2javaMojo のメモリが不足していると思われます。

この場合、

  • 各 wsdl 生成をサブモジュールに分割することをお勧めします。
  • Maven メモリを増やす
  • それでも途中で停止する場合は、 mvn Goals -rf :WhereStops コマンドを使用してみてください。これにより、メモリが不足しているサブモジュールから開始されるため、最初からやり直す必要がなくなります。

-rf がどのように機能するかわからない場合は、Maven 3.2 を使用することに注意してください google mvn -rf

于 2015-06-25T15:40:05.187 に答える
0

よくわかりません。その行番号のコードを調べたところ、残念ながら、その時点で IOException を完全に飲み込んでいることがわかりました。したがって、その IOException の本当の「原因」を取得する方法がわかりません。私はそれを修正し、トランクにコミットするつもりです。明日または月曜日 (毎晩のデプロイ ビルドの後) に最新のスナップショットで再試行できれば、はるかに優れた完全なエラー メッセージが表示されるはずです。

于 2011-06-17T17:02:24.703 に答える