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

相关推荐
Smile灬凉城6669 分钟前
反序列化为啥可以利用加号绕过php正则匹配
开发语言·php
lsx20240621 分钟前
SQL MID()
开发语言
Dream_Snowar24 分钟前
速通Python 第四节——函数
开发语言·python·算法
西猫雷婶25 分钟前
python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分
开发语言·python·opencv
鸿蒙自习室26 分钟前
鸿蒙UI开发——组件滤镜效果
开发语言·前端·javascript
星河梦瑾26 分钟前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
黄名富29 分钟前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
love静思冥想31 分钟前
JMeter 使用详解
java·jmeter
言、雲33 分钟前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
TT哇40 分钟前
【数据结构练习题】链表与LinkedList
java·数据结构·链表