IntelliJ IDEA创建项目部署时遇UnsupportedClassVersionError求助
问题成因分析
先明确版本对应关系
- class文件版本55.0对应Java 11,52.0对应Java 8,错误提示说明
jakarta.ws.rs.core.FeatureContext类是用Java 11编译的,你的Java 8运行环境无法识别加载。
核心原因:依赖的Jersey/Jakarta RS版本差异
你遇到的问题本质是两个项目依赖的Jersey(Jakarta RESTful Web Services)版本属于不同系列:
- 用Maven archetype创建的项目使用
Jersey 2.36,属于Jersey 2.x系列:- 基于传统Java EE规范,使用
javax.ws.rs命名空间 - 编译目标兼容Java 8,完全适配你的Java 8环境以及Glassfish 5、Tomcat 9(这两款服务器均支持Java EE 8,对应javax.*命名空间的API)
- 基于传统Java EE规范,使用
- 你用IntelliJ创建的Hibernate项目,默认引入了Jersey 3.x及以上版本(或其他Jakarta EE 9+的RS实现):
- Jersey 3.x开始迁移到Jakarta EE 9规范,命名空间从
javax.ws.rs改为jakarta.ws.rs - 这类版本的编译目标最低是Java 11,生成的class文件版本为55.0,自然无法在Java 8环境中加载
- 同时Glassfish 5、Tomcat 9本身不原生支持Jakarta EE9+的jakarta.*命名空间API,进一步加剧了兼容性问题
- Jersey 3.x开始迁移到Jakarta EE 9规范,命名空间从
快速验证方式
检查你Hibernate项目的pom.xml(或构建配置文件),如果看到org.glassfish.jersey相关依赖的版本是3.x及以上,或者依赖了jakarta.ws.rs:jakarta.ws.rs-api这类Jakarta命名空间的API,即可确认是版本选择导致的问题。
内容的提问来源于stack exchange,提问作者Fotis Kolytoumpas
相关产品推荐
相关产品推荐

