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文件
<!--		Jwt依赖-->
		<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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值