Jersey框架资源实际存在却返回404错误,树莓派Web服务后端问题排查
问题原因及修复方案
- 包扫描路径不匹配
你在web.xml中配置的Jersey包扫描路径为com.resttest.resttest,但MyResource.java的实际包路径是com.X.X,Jersey无法扫描到不在指定路径下的资源类,导致接口未注册,所以返回404。
修复方案:将web.xml中param-value的值改为MyResource实际所在的包:
<init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.X.X</param-value> </init-param>
- 请求路径缺失上下文根
你前端代码中请求的地址是http://localhost:8080/webapi/myresource,如果你的JavaWeb项目没有将上下文根配置为/,需要在路径中加上你的项目名,比如你的项目名为demo,则请求地址改为:
xhr.open('POST', 'http://localhost:8080/demo/webapi/myresource');
如果部署在Tomcat等容器中,也可以直接将项目war包重命名为ROOT.war,即可使用原路径访问。
3. 额外排查点
如果修复后出现跨域报错,可以在Jersey配置中添加跨域过滤器,或者在MyResource类上添加跨域注解。
内容的提问来源于stack exchange,提问作者SonOfEl
相关产品推荐
相关产品推荐

