该异常是由于JDK版本升级之后,javax.xml.bind.DatatypeConverter类被删除所致。解决该问题的方法如下:

  1. 在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
  1. 在应用程序的启动参数中添加以下参数:
--add-modules java.xml.bind

例如,对于Tomcat,可以在启动脚本中添加以下命令:

set "JAVA_OPTS=%JAVA_OPTS% --add-modules java.xml.bind"
  1. 如果您使用的是JDK 9或更高版本,则可以使用以下代码解决该问题:
import javax.xml.bind.DatatypeConverter;

public class Base64Utils {
    public static String encode(String str) {
        return DatatypeConverter.printBase64Binary(str.getBytes());
    }

    public static String decode(String str) {
        return new String(DatatypeConverter.parseBase64Binary(str));
    }
}

这段代码使用了DatatypeConverter的替代方法来进行Base64编码和解码

orgspringframeworkwebutilNestedServletException Handler dispatch failed; nested exception is javalangNoClassDefFoundError javaxxmlbindDatatypeConverter 解决

原文地址: https://www.cveoy.top/t/topic/ddVz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录