首页 > 解决方案 > jaxb2-maven-plugin 和多个 xsd 模式生成问题

问题描述

我创建了一个微型 Maven 项目,可以完全重现我的问题。

GitHub 上的 SchemaGen Maven 项目

我有多个 java 类(带有 Xml 注释),我想通过 jaxb2-maven-plugin 生成相应的 xsd 模式。

当我执行“mvn clean compile”时,出现此错误:

[ERROR] : class org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to class org.apache.xml.serializer.SerializationHandler (org.apache.xml.serializer.ToXMLSAXHandler is in unnamed module of loader java.net.URLClassLoader @314b7945; org.apache.xml.serializer.SerializationHandler is in unnamed module of loader java.net.URLClassLoader @68c87fc3)

如果我删除这个 Xalan 依赖项,一切都会完美运行。

<dependency>
  <groupId>xalan</groupId>
  <artifactId>xalan</artifactId>
  <version>2.7.2</version>
</dependency>

重要提示:我需要在我的真实项目中保持这个 Xalan 依赖!

重要 2:如果我在 pom.xml 上评论两个执行之一,xsd 生成效果很好

重要 3:我正在使用 Java OpenJdk 15

如何保持 Xalan 依赖并获得多个 xsd 模式生成工作?

谢谢!

标签: xsdjaxbxalanschemagen

解决方案


我终于通过在 Xalan 依赖项中添加“范围运行时”解决了我的问题:

<dependency>
  <groupId>xalan</groupId>
  <artifactId>xalan</artifactId>
  <version>2.7.2</version>
  <scope>runtime</scope>
</dependency>

现在 xsd 模式生成工作正常。


推荐阅读