将 JAXB 从 javax 迁移到 jakarta 后,XJC 抛出 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException [已关闭]

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

我想要实现的目标

  • 将 Spring 应用程序(不是 Spring boot)从 Java 8 移至 17,将 Tomcat 8 移至 10。

问题

  • 在遵循这个问题之后,我已经用 jakarta 替换了 javax 库(主要用于 xml 绑定),但是我们有一个使用 xjc 的 gradle 脚本,并且因以下异常而失败,并且找不到如何修复它。

    java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException

    xjc(删除旧输出:“是”,目标:sourceDir,绑定:$ {“schema”}/processPaymentBindings.jaxb { 架构(目录:架构,包括:“provider/gpos/processPayment/.xsd) arg(值:“-X默认值” arg(值:“-扩展名”) 产生(目录:sourceDir,包括:“**/.java Do”) }

我们在 Gradle 上的任务中使用以下 JAXB 依赖项供您参考:

  • jaxb:雅加达激活
  • jaxb:xmlbind
  • jaxb:impl
  • jaxb1:实现
  • jaxb:xjc
  • jaxb2:常见
java jaxb xjc jakarta-migration
1个回答
0
投票

您需要添加以下依赖项,这些依赖项曾经包含在标准 JRE 中,但现在是第三方 jar

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-xjc</artifactId>
    <version>2.3.2</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.2</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.