文档章节

在使用jersey框架搭建服务时,经常会报出如下异常

binhu
 binhu
发布于 2016/02/04 10:47
字数 627
阅读 83
收藏 2

在使用jersey框架搭建服务时,经常会报出如下异常:

Java代码  收藏代码

  1. com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.  
        at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770)  
        at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)  
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765)  
        at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489)  
        at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)  
        at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)  
        at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)  
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)  
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)  
        at javax.servlet.GenericServlet.init(GenericServlet.java:212)  
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)  
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)  
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)  
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)  
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)  
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)  
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)  
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)  
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)  
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)  
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)  
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)  
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)  
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)  
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)  
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)  
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)  
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)  
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)  
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)  
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

 下面是出现这种异常的几种情况

1、在不与spring整合,而是直接使用jersey搭建服务时,如果只在web.xml 中配置了如下代码:

<servlet>
  <servlet-name>abc</servlet-name>
   
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 

此时启动tomcat,会报出上面的异常,原因是实例张不包含任何启动资源的类,你要确保实例已经创建,例如:

Java代码  收藏代码

  1. @Path("abc")  
    @Produces("application/xml")  
    @Consumes("application/xml")  
    public class Abc  
    {  
        @POST  
        @Produces("application/xml")  
        @Consumes("application/xml")  
        public void abc(){  
              
        }  
          
    }

 这样再启动,就可以了。

2、在与spring整合中时,如果出现如上异常,原因可能是:

1)缺少spring-jersey.jar包

将spring-jersey.jar包添加到工程lib下,然后修改下web.xml配置文件

<servlet>
  <servlet-name>abc</servlet-name>
   
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

然后再重新启动tomcat,就可以了。

2)如果按照1)操作完成后,tomcat启动仍然报上面的异常,此时需要在web.xml中在重新添加点配置信息(红色部分):

<servlet>
  <servlet-name>abc</servlet-name>
  <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
  
<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
   <param-value>com.xxyd.map.webservice</param-value><!--代表的是你服务端的路径,要和你的工程服务器端路径保持一致-->
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 此时再启动tomcat就可以了。

 

当然,还有一种方式就是重新将“com.sun.jersey.spi.spring.container.servlet.SpringServlet”替换回“com.sun.jersey.spi.spring.container.servlet.SpringServlet”,但如果是这样的话,就失去了spring与jersey整合的意义了,不提倡如此解决。


2、冲突问题

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/


导入jersey jar 包就不要再导入javax.ws.rs,会引发冲突


© 著作权归作者所有

binhu
粉丝 19
博文 209
码字总数 205648
作品 0
合肥
私信 提问
derby查询出现表不存在错误

这两天在Eclipse下用maven搭建了web工程,容器用的是tomcat8.0,使用的是derby(glassfish)框架,数据库是用的内嵌的derby,在网页端想获取derby中相关数据时,控制台报出错误,错误信息提示...

Do it Now
2016/01/21
889
2
Jersey后端服务接收ajax前端的图片上传

近期的项目里需要在前端上传图片后端接收处理。前端JSP页面使用Ajax上传图片后端使用Jersey框架提供restful接口接收处理图片。 一、前端的处理 jsp页面中图片上传没有使用form表单而是直接使...

lilugoodjob
2018/07/02
0
0
Jersey后端服务接收ajax前端的图片上传

近期的项目里需要在前端上传图片后端接收处理。前端JSP页面使用Ajax上传图片后端使用Jersey框架提供restful接口接收处理图片。 一、前端的处理 jsp页面中图片上传没有使用form表单而是直接使...

lilugoodjob
2018/07/02
0
0
Android使用Sugar ORM创建数据库报no such table:...的解决方法

在学习使用Android开源框架Sugar ORM时,只是做了开始的创建数据库的操作就报出如下的异常信息 android.database.sqlite.SQLiteException: no such table: BOOK(Sqlite code 1): , while com...

)^程序猿^(
2016/09/12
0
0
Jersey1.x + Spring 依赖注入出现 空指针异常

在使用rest风格和Spring的依赖注入做一个demo的时候。依赖注入 出现空指针异常 The RuntimeException could not be mapped to a response, re-throwing to the HTTP container java.lang.Nu...

Jeremy_pan
2015/03/13
561
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部