问题随记
在集成 Jwt 认证时出现以下错误:
查询了一下资料,大概是因为 io.jsonwebtoken.Jwts.builder 不支持较高版本的 Java,这可能与Java SE 9及更高版本中javax.xml.bind模块的移除相关(这个模块在早期版本(如Java SE 8)中是默认存在的),其中包括了 DatatypeConverter 类。这导致了许多使用 JAXB 的旧代码在升级到 Java 9 或更高版本时遇到类加载问题。
解决方法
解决方案:使用 JDK 的 JAXB 模块:如果你的应用程序依赖于 JAXB,可以考虑以下两种方法来解决这个问题:
- 在 Maven 或 Gradle 中添加依赖:如果你使用 Maven,则可以添加以下依赖:
- 如果使用 Gradle,可以添加以下依赖:
- 手动添加 Java EE 模块:如果使用的是 Java 9 或更新版本,并且不想添加额外的依赖,可以通过添加
--add-modules java.xml.bind
或者在module-info.java
文件中声明依赖来解决问题。例如:
- 更新到新的 XML 处理库:另一种选择是将你的项目迁移到使用新的 XML 处理库,如
javax.xml.stream
,或者使用更现代的替代方案,如 JSON 格式的数据交换。
生成 token 成功,问题解决。