【问题标题】:Getting cxf-codegen-plugin working on Java 9让 cxf-codegen-plugin 在 Java 9 上工作
【发布时间】:2018-10-02 04:38:14
【问题描述】:

我一直试图让 cxf-codegen-plugin 在 Java 9 上工作,但遇到了一些阻力。到目前为止,我已将 java.se.ee 添加到运行时模块并将必要的依赖项添加到 maven。

但是,当我尝试构建源代码时,出现以下错误:

DefaultValidationEventHandler: [ERROR]: unexpected element (uri:"http://cxf.apache.org/tools/plugin", local:"databinding"). Expected elements are <{}databinding>,<{}frontend> 
 Location:  node: [databinding: null]
apr. 21, 2018 8:23:57 EM org.apache.cxf.tools.wsdlto.core.PluginLoader loadPlugin
ALLVARLIG: Tools plugin jar:file:/C:/Users/Daniel/.m2/repository/org/apache/cxf/cxf-tools-wsdlto-core/3.2.4/cxf-tools-wsdlto-core-3.2.4.jar!/META-INF/tools-plugin.xml load failed

任何想法可能导致此问题或如何解决?

【问题讨论】:

    标签: java-9 cxf-codegen-plugin


    【解决方案1】:

    遇到同样的问题,我最终更改了插件配置并明确添加了所需的模块:

     <plugin>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-codegen-plugin</artifactId>
         <version>3.2.4</version>
         <configuration>
             <additionalJvmArgs>--add-modules java.xml.bind,java.xml.ws</additionalJvmArgs>
             <fork>once</fork>
         </configuration>
     </plugin>
    

    它似乎适用于 Java 9/10,但肯定不适用于 Java 11。

    【讨论】:

    【解决方案2】:

    正如文档所说,您必须从版本 3.2.5 cxf documentation for java 9开始

    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.2.5</version>
    

    【讨论】:

      【解决方案3】:

      我用 java 10 测试过:

      <plugin>
          <groupId>org.apache.cxf</groupId>
          <artifactId>cxf-codegen-plugin</artifactId>
          <version>3.2.4</version>
          <configuration>
              <fork>true</fork>
              <additionalJvmArgs>--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</additionalJvmArgs>
          </configuration>
      </plugin>
      

      我的maven执行文件(windows):

      set PATH=C:\Users\user\Documents\programs\jdk-10\bin;%PATH%
      set JAVA_HOME=C:\Users\user\Documents\programs\jdk-10
      set MAVEN_OPTS=--add-modules java.xml.bind
      mvn clean install
      

      【讨论】:

        【解决方案4】:

        在与 Java 8 一起运行时使用 --add-modules 失败。为了使构建与 Java 8 和 Java 9 兼容,我添加了 javax.xml.bind:jaxb-api 作为插件的依赖项,这似乎工作正常。

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <!-- ... -->
            </executions>
            <dependencies>
                <dependency>
                    <groupId>javax.xml.bind</groupId>
                    <artifactId>jaxb-api</artifactId>
                    <version>2.3.1</version>
                </dependency>
            </dependencies>
        </plugin>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-02
          • 2022-01-22
          • 2012-04-27
          • 2016-04-29
          • 2015-01-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多