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

相关推荐
顺风尿一寸7 小时前
从 Java NIO poll 到 Linux 内核 poll:一次系统调用的完整旅程
java
程途知微7 小时前
JVM运行时数据区各区域作用与溢出原理
java
华仔啊9 小时前
为啥不用 MP 的 saveOrUpdateBatch?MySQL 一条 SQL 批量增改才是最优解
java·后端
xiaoye201811 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
beata15 小时前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端
Seven9715 小时前
剑指offer-81、⼆叉搜索树的最近公共祖先
java
雨中飘荡的记忆1 天前
保证金系统入门到实战
java·后端
Nyarlathotep01131 天前
Java内存模型
java
暮色妖娆丶2 天前
不过是吃了几年互联网红利罢了,我高估了自己
java·后端·面试