IntelliJ+Maven+Tomcat搭建Jersey REST服务报HTTP 500错误如何解决
问题根因
报错的核心原因是Jersey 2.28内置的ASM字节码解析库版本过老,不支持Java 16版本编译生成的字节码,扫描项目类时触发解析异常,最终导致Jersey Servlet初始化失败。
解决方案
以下两种方案二选一即可:
方案1:升级Jersey版本(推荐)
将pom.xml中两个Jersey相关依赖的版本升级到2.37及以上的稳定版,新版本的ASM已兼容Java 16字节码:
<dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.37</version> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <version>2.37</version> </dependency>
修改后执行Maven的clean、install命令,重启Tomcat即可。
方案2:降低Java编译版本
如果不想调整Jersey版本,可以将pom.xml中的编译版本降级到Jersey 2.28支持的Java 11或Java 8:
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
可选校验项
- 确认
TestService类确实放在web包下,和web.xml中配置的扫描包路径一致 - 确认Tomcat部署的上下文路径为
TaskMenegerMaven-1.0,如果部署时修改了上下文路径,需要同步调整访问地址
内容的提问来源于stack exchange,提问作者Denis Sorokin
相关产品推荐
相关产品推荐

