web-dev-qa-db-ja.com

CXF codegen mavenプラグインがOpenJDK 11で機能しない

私はJDK 9および10とCXF codegenプラグイン3.2.5および3.2.6で問題なく作業していましたが、今日はコードベースをOracle JDK 10からOpenJDK 11ビルド28に更新しようとしていますが、常に取得しています同じエラー:

[INFO] Error occurred during initialization of boot layer
[INFO] Java.lang.module.FindException: Module Java.xml.ws not found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.747 s
[INFO] Finished at: 2018-10-17T16:38:38+02:00
[INFO] Final Memory: 17M/60M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.cxf:cxf-codegen-plugin:3.2.6:wsdl2Java (cerberus-wsdl) on project cerberus: 
[ERROR] Exit code: 1
[ERROR] Command line was: /opt/prod_jdk/bin/Java --add-modules Java.activation,Java.xml.bind,Java.xml.ws --add-exports=Java.xml.bind/com.Sun.xml.internal.bind.v2.runtime=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=Java.xml/com.Sun.org.Apache.xerces.internal.impl.xs=ALL-UNNAMED --add-exports=Java.xml.bind/com.Sun.xml.internal.bind.marshaller=ALL-UNNAMED --add-opens Java.xml.ws/javax.xml.ws.wsaddressing=ALL-UNNAMED --add-opens Java.base/Java.security=ALL-UNNAMED --add-opens Java.base/Java.net=ALL-UNNAMED --add-opens Java.base/Java.lang=ALL-UNNAMED --add-opens Java.base/Java.util=ALL-UNNAMED --add-opens Java.base/Java.util.concurrent=ALL-UNNAMED -jar /tmp/cxf-tmp-2828938832312113909/cxf-codegen12095310072621993552.jar /tmp/cxf-tmp-2828938832312113909/cxf-w2j12256414556760820901args

これは、CXF codegenプラグインを使用するpom.xmlです。

<plugin>
                <groupId>org.Apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>3.2.6</version>
                <configuration>
                    <fork>once</fork>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                        <version>1.3.2</version>
                    </dependency>

                    <dependency>
                        <groupId>javax.activation</groupId>
                        <artifactId>javax.activation-api</artifactId>
                        <version>1.2.0</version>
                    </dependency>

                    <dependency>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.3.1</version>
                    </dependency>

                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-runtime</artifactId>
                        <version>2.3.1</version>
                    </dependency>

                    <dependency>
                        <groupId>javax.xml.ws</groupId>
                        <artifactId>jaxws-api</artifactId>
                        <version>2.3.1</version>
                    </dependency>

                    <dependency>
                        <groupId>com.Sun.xml.ws</groupId>
                        <artifactId>jaxws-rt</artifactId>
                        <version>2.3.1</version>
                    </dependency>
                </dependencies>
<executions>...</executions>
<plugin>

何か不足していますか?私の知る限り、これはJDK 9および10と同じように機能するはずです。問題があります https://issues.Apache.org/jira/browse/CXF-7741 JDKについて話します11互換性ですが、これもプラグインではなくCXFフレームワーク用です(私は思う)。

9
Nico

この問題はcxf 3.3.0で解決されます( https://issues.Apache.org/jira/browse/CXF-7852

今のところ、mvn installhttps://github.com/Apache/cxf のmvn-pluginsディレクトリで実行して、プラグインをビルドできます。そして、pomのバージョンを3.3.0-SNAPSHOTに設定します

Edit:プラグインはApacheスナップショットリポジトリにあります。

<pluginRepositories>         
   <pluginRepository>
      <id>Apache.snapshots</id>
      <name>Maven Plugin Snapshots</name>
      <url>http://repository.Apache.org/snapshots/</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
</pluginRepositories>
<build>
  <plugins>
    <plugin>
      <groupId>org.Apache.cxf</groupId>
      <artifactId>cxf-codegen-plugin</artifactId>
      <version>3.3.0-SNAPSHOT</version>
...

注(2019-01-28):プラグインは released になりました。通常どおり依存関係を追加できます。

<dependency>
  <groupId>org.Apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>3.3.0</version>
  <type>maven-plugin</type>
</dependency>
15
Initial-B

プラグインをJava 11でも動作するようにするのに苦労しました。問題を解決するためにプラグインの依存関係を詳細に試してみました。

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.Apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>3.2.3</version>
                <dependencies>
                    <dependency>
                        <groupId>com.Sun.xml.bind</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>${jaxb-api.version}</version>
                    </dependency>
                    <!-- Java Architecture for XML Binding (JAXB), Java 11+ support -->                                         
                    <dependency>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>${jaxb-api.version}</version>
                    </dependency>                       
                    <dependency>
                        <groupId>com.Sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>${jaxb-api.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>com.Sun.xml.bind</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>${jaxb-api.version}</version>
                    </dependency>
                    <!-- JavaBeans Activation Framework (JAF), Java 11+ support -->
                    <dependency>
                        <groupId>javax.activation</groupId>
                        <artifactId>javax.activation-api</artifactId>
                        <version>${jaf-api.version}</version>
                    </dependency>       
                    <!-- Java API for XML Web Services (JAX-WS), Java 11+ support -->
                    <dependency>
                        <groupId>javax.xml.ws</groupId>
                        <artifactId>jaxws-api</artifactId>
                        <version>${jaxws-api.version}</version>
                    </dependency>
                </dependencies>                 
            </plugin>               

..運がありません。プラグインのバージョン3.2.3にアップグレードすると、問題はなくなりました(ここで説明するように3.3.0を待っている間: https://issues.Apache.org/jira/browse/CXF-7852 )。