Je travaille avec JDK 9 & 10 et le plugin CXF codegen 3.2.5 et 3.2.6 sans aucun problème, mais aujourd’hui, j’essaie de mettre à jour ma base de code de Oracle JDK 10 à OpenJDK 11 build 28, mais j la même erreur:
[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
voici mon pom.xml qui utilise le plugin CXF Codegen:
<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>
Est-ce que je manque quelque chose? Autant que je sache, cela devrait fonctionner de la même manière que dans JDK 9 et 10. Il existe un problème https://issues.Apache.org/jira/browse/CXF-7741 qui parle de la compatibilité de JDK 11, mais encore une fois c'est pour le framework CXF pas pour le plugin (je pense).
Ce problème sera résolu dans cxf 3.3.0 ( https://issues.Apache.org/jira/browse/CXF-7852 )
Pour l'instant, vous pouvez exécuter mvn install dans le répertoire mvn-plugins de https://github.com/Apache/cxf pour construire les plugins et définir la version de pom sur 3.3.0 -INSTANTANÉ
Edit: Le plugin est dans le dépôt des instantanés Apache, il est donc probablement préférable de l'obtenir à partir de là:
<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>
...
Note (2019-01-28): Le plugin est maintenant publié , nous pouvons ajouter la dépendance comme d'habitude:
<dependency>
<groupId>org.Apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.3.0</version>
<type>maven-plugin</type>
</dependency>
J'ai également eu du mal à faire en sorte que le plugin fonctionne avec Java 11 également . J'ai essayé de détailler les dépendances du plugin pour résoudre le problème:
<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>
.. sans chance. Le problème a disparu lorsque je suis passé à la version 3.2.3 du plugin (En attendant 3.3.0 comme décrit ici: https://issues.Apache.org/jira/browse/CXF- 7852 ).