有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CXF自动生成失败

当我将插件添加到pom文件时,应用程序出现错误,无法创建服务

我试图让cxf codegen插件从我的wsdl文件生成源代码。我做了研究,但找不到解决办法。我需要你的帮助

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

错误:执行生成目标组织的来源。阿帕奇。cxf:cxf codegen插件:3.1.6:wsdl2java失败:执行org时缺少必需的类。阿帕奇。cxf:cxfcodegen插件:3.1.6:wsdl2java:javax/xml/bind/annotation/adapters/hexbinaryapter

错误源: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>

windows10、x64、Jdk1。8.0_212,弹簧工具套件(4.9.0版本)

Spring工具套件 特性:Jdk编译器:1.8。已安装JREs:jre1。8.0_241

我的英语不好。对不起

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    我不完全确定为什么找不到这个类。您使用的是Java8,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>
    

    您也可以将其添加到同一节中

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