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

相关推荐
kill bert2 小时前
Java八股文背诵 第四天JVM
java·开发语言·jvm
Amd7943 小时前
FastAPI安全认证中的依赖组合
测试用例·fastapi·jwt·依赖注入·权限校验·安全认证·组合依赖
低头专研3 小时前
Markdown标题序号处理工具——用 C 语言实现
c语言·开发语言·typora·markdown文件标题编号·md文件标题序号
刚入门的大一新生5 小时前
C++初阶-C++入门基础
开发语言·c++
你是理想5 小时前
wait 和notify ,notifyAll,sleep
java·开发语言·jvm
helloworld工程师5 小时前
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
java·eclipse·tomcat·maven
Java&Develop5 小时前
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊
java·ide·intellij-idea
forestsea5 小时前
Python进阶编程总结
开发语言·python·notepad++
q567315236 小时前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
你们补药再卷啦6 小时前
不用额外下载jar包,idea快速查看使用的组件源码
java·ide·intellij-idea