解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法

最近在做WebService项目,本地测试没有问题,打算部署到服务器上,但是部署后,访问时出现了如下图1的错误:

解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269
图1
       图1报的是没有找到定义的类的错误。刷新页面有又出现了另外“新”的错误:
解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269
图2
       根据图2显示,起先以为是配置出错了,导致找不到Client类,从而不能初始化该类。但是经过仔细排查后,发现端口,路径等配置并没有错误,所以非常疑惑。
      后来经过网上查找资料,发现了原因:缺少jaxrpc.jar包,这个包应该是在tomcat目录中的lib目录下。我在lib目录下查看后果然没有这个包,把这个包添加到lib,重启服务器后,正常显示,如图3:
解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269
图3
      也就是说,其实图2是由图1引起的,这两个错误是同一个错误,都是由于少了jaxrpc.jar包引起的。其实这个包是依赖于axis.jar的包之一,其他类似包还有如图4所示:
解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269
图4
另外需要引起重视的是:这里报的是NoClassDefFoundError错误,而不是报ClassNotFoundException,前者是在编译阶段发生的,后者是在运行时发生的,而不是编译阶段。
 
本错误还有另外一种解决办法:
由于这是WebService,也有可能缺少WebService的关键包,本项目中,我的lib目录下同样缺少如图5的包:
解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269
图5
 将图5中的包添加到lib目录,重启服务器后同样能解决问题。
 
 注:jar包一定要放在WEB-INF下的lib下,否则web项目不生效。
 
 
 
 
 
以上缺少的包均可以从网上下载。
posted @ 2017-02-20 10:20  stsinghua  阅读(18273)  评论(0编辑  收藏  举报