fix: 升级 JDK 25 全链路 - 解决 javax.xml.bind.DatatypeConverter 缺失

- jjwt: 0.9.1 → 0.12.6 (移除 javax.xml.bind 依赖)
- Lombok: 1.18.34 → 1.18.38 (支持 JDK 25 内部 API)
- maven-compiler-plugin: 3.11.0 → 3.15.0 (ASM 支持 JDK 25)
- java.version: 17 → 25 (class version 69)
- TokenService: 适配 jjwt 0.12.x 新 API
- annotationProcessorPaths: 硬编码版本改为 ${lombok.version}

验证: 编译通过 / 打包成功 / JDK 25 运行启动正常 / JWT 登录接口正常
This commit is contained in:
2026-06-05 09:20:28 +08:00
parent 554e20f276
commit 328d450a74
6 changed files with 52 additions and 21 deletions

View File

@@ -11,8 +11,10 @@ import com.core.common.utils.ip.IpUtils;
import com.core.common.utils.uuid.IdUtils;
import eu.bitwalker.useragentutils.UserAgent;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -153,9 +155,16 @@ public class TokenService {
* @param claims 数据声明
* @return 令牌
*/
private SecretKey getSigningKey() {
byte[] keyBytes = secret.getBytes(StandardCharsets.UTF_8);
// Pad to 64 bytes for HS512 minimum key requirement
byte[] paddedKey = new byte[64];
System.arraycopy(keyBytes, 0, paddedKey, 0, Math.min(keyBytes.length, 64));
return Keys.hmacShaKeyFor(paddedKey);
}
private String createToken(Map<String, Object> claims) {
String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
return token;
return Jwts.builder().claims(claims).signWith(getSigningKey()).compact();
}
/**
@@ -165,7 +174,7 @@ public class TokenService {
* @return 数据声明
*/
private Claims parseToken(String token) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
return Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token).getPayload();
}
/**