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

相关推荐
java1234_小锋7 分钟前
PyTorch2 Python深度学习 - 模型保存与加载
开发语言·python·深度学习·pytorch2
JavaGuide17 分钟前
OPPO 后端校招面试,过于简单了!
java·后端
码割机22 分钟前
Linux服务器安装jdk和maven详解
java·linux·maven
ACP广源盛1392462567332 分钟前
(ACP广源盛)GSV2231---DisplayPort 1.4 MST 到 HDMI 2.0/DP/Type-C 转换器(带嵌入式 MCU)
c语言·开发语言·单片机·嵌入式硬件·音视频·mst
quant_198632 分钟前
【教程】使用加密货币行情接口 - 查询比特币实时价格
开发语言·后端·python·websocket·网络协议
熊猫_豆豆40 分钟前
Python 写一个标准版和程序员版计算器
开发语言·python·计算器
Mr.Jessy1 小时前
Web APIs 学习第四天:DOM事件进阶
开发语言·前端·javascript·学习·ecmascript
studyForMokey1 小时前
【Kotlin内联函数】
android·开发语言·kotlin
小虚竹1 小时前
Rust日志系统完全指南:从log门面库到env_logger实战
开发语言·后端·rust
星释1 小时前
Rust 练习册 8:链表实现与所有权管理
开发语言·链表·rust