从 Java8 迁移到 Java11 后出现 JAXB SAXParseException

问题描述 投票:0回答:1

我正在将 Spring Boot 2.7.0 项目从 Java 8 升级到 Java 11。 该项目正在使用 maven-jaxb2-plugin 从 wsdl 文件生成类。

这是配置

            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.15.1</version>
            <executions>
                <execution>
                    <id>organisationalStructure</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>

                    <configuration>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <generateDirectory>${project.build.directory}/generated-sources</generateDirectory>
                        <generatePackage>com.test.organisationalStructure</generatePackage>
                        <schemas>
                            <schema>
                                <fileset>
                                    <directory>${basedir}/src/main/resources/wsdl/</directory>
                                    <include>organisationStructure.wsdl</include>
                                </fileset>
                            </schema>
                        </schemas>
                        <readOnly>true</readOnly>
                        <removeOldOutput>false</removeOldOutput>
                        <forceRegenerate>true</forceRegenerate>
                    </configuration>
                </execution>

两个版本的配置保持不变,只是maven-jaxb2-plugin的版本从0.13.3更改为0.15.1。我必须添加新的 Maven 依赖项 jaxwx-api 和 saaj-impl。他们使用来自 Spring Boot 的默认版本。

使用 Java 8 运行 mvn clean install 时的输出是

[信息] --- maven-jaxb2-plugin:0.13.3:生成(组织结构)@ redb2b --- [警告] 您在配置中使用了forceRegenerate=true。 此配置设置已弃用且不推荐,因为它会导致 IDE 中的增量构建出现问题。 请参阅以下链接了解更多信息: https://github.com/highsource/maven-jaxb2-plugin/wiki/Do-Not-Use-forceRegenerate 考虑从插件配置中删除此设置。 [INFO] 打开[forceRegenerate]开关,XJC将被执行。 [INFO] 剧集文件 [C:\RPSS\B2B-portal arget\ generated-sources\META-INF\sun-jaxb.episode] 已使用 if-exists="true" 属性进行了扩充。

使用 Java 11 运行 mvn clean install 时,输出相同,但也包含异常

org.xml.sax.SAXParseException:您是否正在尝试编译 WSDL?对 WSDL 的支持是实验性的。您可以使用 -wsdl 选项启用它。

SAXParseException 出现在最后 2 行 [INFO] 之间。 代码已从 wsdl 文件成功生成,并且应用程序运行良好。

不过,我想了解异常背后的原因。 wsdl 中没有任何变化。

谢谢。

jaxb jax-ws maven-jaxb2-plugin
1个回答
0
投票

很抱歉回答了很长时间,但这是一个错误,不是插件本身的错误,而是 JAXB-XJC 中的错误,该错误是在 2.3.6 版本中引入的(问题here),在插件的 0.15.x 版本中使用。

优点:它已在最新版本的 JAXB 运行时(4.0.4 和 2.3.9)中得到解决。 我们目前正在基于 4.0.4 版本的 JAXB-XJC 推出下一版本的插件(4.0.1),然后查看 2.0.10 版本以及 JAXB-XJC 的 2.3.9 升级,以关闭JAXB-Tools 中的问题

您可能会查看迁移指南,以便使用最新版本的maven-plugin和相关工具,因为今年发生了很多变化(将存储库合并到maven-jaxb2-plugin的存储库中,重命名为jaxb-tools,支持jakarta JAXB的版本,许多错误修复...)

© www.soinside.com 2019 - 2024. All rights reserved.