Jdk17 jwt报错 java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

Jdk17 jwt报错 java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

版本

  • Spring Boot 3.3.2
  • Jdk17
  • 原先Jwt0.9.1

解决办法

  • 修改maven项目下的pom.xml文件

    复制代码
      	<dependency>
      	    <groupId>io.jsonwebtoken</groupId>
      	    <artifactId>jjwt-api</artifactId>
      	    <version>0.11.2</version>
      	</dependency>
      	<!--		Jwt依赖-->
      	<dependency>
      	    <groupId>io.jsonwebtoken</groupId>
      	    <artifactId>jjwt-impl</artifactId>
      	    <version>0.11.2</version>
      	</dependency>
      	<!--		Jwt依赖-->
      	<dependency>
      	    <groupId>io.jsonwebtoken</groupId>
      	    <artifactId>jjwt-jackson</artifactId>
      	    <version>0.11.2</version>
      	</dependency>
  • 修改Jwt相关代码

    import java.util.Base64;
    import java.util.Date;
    import java.util.HashMap;
    import javax.crypto.SecretKey;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    import io.jsonwebtoken.Claims;
    import io.jsonwebtoken.Jwts;
    import io.jsonwebtoken.security.Keys;
    @Component
    public class JwtTool {

    复制代码
      static private Logger log = LoggerFactory.getLogger(JwtTool.class);
      private static SecretKey key;
      static {
      	String secertString = "hello,world"; 
      	byte[] keyBytes256 = new byte[32];
      	int encodeNum = Base64.getEncoder().encode(secertString.getBytes(),keyBytes256);
      	key = Keys.hmacShaKeyFor(keyBytes256);
      }
      
      public static String getJwt(HashMap<String, Object> peopleMap) {
      	try {
      		String jwt = Jwts.builder()  
                      .setClaims(peopleMap)   
                      .setExpiration(new Date(System.currentTimeMillis()+3600*1000))  
                      .signWith(key)
                      .compact();  
      		log.info(jwt);
      		return jwt;
      	} catch (Exception e) {
      		// TODO: handle exception
      		e.printStackTrace();
      		return null;
      	}
      }
      
      public static String parseJwt(String jwt) {
      	try {
      		Claims claims = Jwts.parserBuilder()
      				.setSigningKey(key)
      				.build()
      				.parseClaimsJws(jwt)
      				.getBody();
      		log.info("解析jwt成功");
      		return claims.toString();
      	} catch (Exception e) {
      		e.printStackTrace();
      		log.info("解析jwt失败");
      		return null;
      	}
      }

    }

参考

https://blog.csdn.net/u010748421/article/details/107363925

相关推荐
卡尔特斯1 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
白鲸开源1 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源
ytadpole1 小时前
Java 25 新特性 更简洁、更高效、更现代
java·后端
纪莫2 小时前
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
java·java面试⑧股
JavaGuide2 小时前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261352 小时前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源2 小时前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
Java中文社群3 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心3 小时前
从零开始学Flink:数据源
java·大数据·后端·flink
间彧3 小时前
Spring Boot项目中如何自定义线程池
java