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

@@ -21,10 +21,10 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>17</source>
<target>17</target>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<compilerArgs>
<arg>-parameters</arg>
@@ -35,7 +35,7 @@
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
@@ -142,7 +142,17 @@
<!-- Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<artifactId>jjwt-api</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Jaxb -->

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();
}
/**

View File

@@ -117,10 +117,10 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<version>3.15.0</version>
<configuration>
<source>17</source>
<target>17</target>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>

View File

@@ -21,8 +21,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>

View File

@@ -56,8 +56,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source> <!-- 将8改为17 -->
<target>17</target> <!-- 将8改为17 -->
<source>${java.version}</source> <!-- 将8改为17 -->
<target>${java.version}</target> <!-- 将8改为17 -->
</configuration>
</plugin>
</plugins>

View File

@@ -23,8 +23,8 @@
<core.version>0.0.1-SNAPSHOT</core.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version> <!-- 将21改为17 -->
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<java.version>25</java.version>
<maven-compiler-plugin.version>3.15.0</maven-compiler-plugin.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<druid.version>1.2.28</druid.version>
<bitwalker.version>1.21</bitwalker.version>
@@ -35,9 +35,9 @@
<commons.io.version>2.21.0</commons.io.version>
<poi.version>4.1.2</poi.version>
<velocity.version>2.3</velocity.version>
<jwt.version>0.9.1</jwt.version>
<jwt.version>0.12.6</jwt.version>
<!-- override dependency version -->
<lombok.version>1.18.34</lombok.version> <!-- 替换为 -->
<lombok.version>1.18.38</lombok.version> <!-- 替换为 -->
<mybatis-plus.version>3.5.16</mybatis-plus.version>
<flowable.version>7.1.0</flowable.version>
<postgresql.version>42.7.10</postgresql.version>
@@ -296,9 +296,21 @@
<!-- Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<artifactId>jjwt-api</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jwt.version}</version>
<scope>runtime</scope>
</dependency>
<!-- 验证码 -->
<dependency>