使用jjwt生成JWT令牌解决报错:nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConvert
·
在pom.xml中导入jjwt依赖:
<!-- jwt令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
工具类JwtUtils代码
/**
* 获取Jwt令牌*/
public class JwtUtils {
private static String signKey = "baiyang";
private static Long expire = 3600000L;
public static String gatJwt(Map<String,Object> claims){
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256,signKey)//签名算法
.setClaims(claims)//自定义内容(载荷)
.setExpiration(new Date(System.currentTimeMillis() + expire))//设置有效期为1h
.compact();
return jwt;
}
}
controller层测试
@Slf4j
@RestController
public class LoginController {
@Autowired
private EmpService empService;
@PostMapping("/login")
public Result login(@RequestBody Emp emp){
log.info("登录 : {}",emp);
Emp e = empService.getEmp(emp);
//登录失败, 返回错误信息
if (e == null) return Result.error("用户名或密码错误");
//登录成功,生成令牌,下发令牌
Map<String, Object> claims =new HashMap<>();
claims.put("id", e.getId());
claims.put("username", e.getUsername());
claims.put("password", e.getPassword());
//jwt包含了当前登录的员工信息
String jwt = JwtUtils.gatJwt(claims);
log.info("jwt : {}",jwt);
//返回jwt令牌信息
return Result.success(jwt);
}
}
发现报如下错误:

解决报错:
pom.xml中引入相关依赖:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.4.0-b180830.0359</version>
</dependency>
问题解决,成功生成JWT令牌

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)