【问题标题】:CXF auto generation failsCXF 自动生成失败
【发布时间】:2021-05-03 02:12:55
【问题描述】:

当我将插件添加到 pom 文件时,我在应用程序上收到错误,我无法创建我的服务。

我正在尝试让 cxf-codegen-plugin 从我的 wsdl 文件中生成源代码。我进行了研究,但找不到解决方案。我需要你的帮助。

控制台输出:在问题选项卡中

错误: 目标 org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java 的执行生成源失败:执行 org.apache.cxf 时缺少必需的类: cxf-codegen-plugin:3.1.6:wsdl2java: javax/xml/bind/annotation/adapters/HexBinaryAdapter

错误资源: pom.xml

POM.XML

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
.......................................................................................................
     <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.1.6</version>
            <executions>
               <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java/</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/resources/wsdl/ProjectName.wsdl</wsdl>
                                <extraargs>                
                                    <extraarg>-verbose</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution> 
            </executions>
        </plugin>

Windows 10、x64、Jdk1.8.0_212、Spring Tools Suite(4.9.0.RELEASE)

Spring 工具套件 特点: Jdk 编译器:1.8。已安装的 JRE:jre1.8.0_241

我的英语不好。对不起。

谢谢。

【问题讨论】:

    标签: java spring maven pom.xml wsdl2java


    【解决方案1】:

    我不完全确定为什么找不到此类。您使用的是 Java 8,并且 JAXB 应该仍然是该版本中 JDK 的一部分(版本 9 和 10 包含在模块 java.se.ee 中,11+ 将其完全删除)。

    您可以尝试将 JAXB 添加为插件的依赖项:

    <plugin>
      <!-- your config omitted for brevity -->
      <dependencies>
        <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>2.3.1</version>
        </dependency>
      </dependencies>
    </plugin>
    

    虽然这只添加了 JAXB API,而不是实际的实现。 Glassfish 是一种可能的实现方式:

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

    您也可以将其添加到同一部分。

    同样,我不完全确定这是否可行(因为使用 Java 8,JAXB 应该出现在您的类路径中),但值得一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多