最近在做WebService项目,本地测试没有问题,打算部署到服务器上,但是部署后,访问时出现了如下图1的错误:
![解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269](http://img0.ph.126.net/74I6vzHPZmeP91IBk-H9Hg==/1063412462030628945.png)
图1
图1报的是没有找到定义的类的错误。刷新页面有又出现了另外“新”的错误:![解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269](http://img2.ph.126.net/zVryOuFyzTNp3xgueqx7hQ==/3355744672446026309.png)
图2
根据图2显示,起先以为是配置出错了,导致找不到Client类,从而不能初始化该类。但是经过仔细排查后,发现端口,路径等配置并没有错误,所以非常疑惑。 后来经过网上查找资料,发现了原因:缺少jaxrpc.jar包,这个包应该是在tomcat目录中的lib目录下。我在lib目录下查看后果然没有这个包,把这个包添加到lib,重启服务器后,正常显示,如图3:
![解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269](http://img2.ph.126.net/r1qV_97oKsNbOPKb-1zguA==/6630492721117205090.png)
图3
也就是说,其实图2是由图1引起的,这两个错误是同一个错误,都是由于少了jaxrpc.jar包引起的。其实这个包是依赖于axis.jar的包之一,其他类似包还有如图4所示:
![解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269](http://img2.ph.126.net/7-FiKChqYGoQt1aq1Af5yg==/6619245816677600468.png)
图4
另外需要引起重视的是:这里报的是NoClassDefFoundError错误,而不是报ClassNotFoundException,前者是在编译阶段发生的,后者是在运行时发生的,而不是编译阶段。
本错误还有另外一种解决办法:
由于这是WebService,也有可能缺少WebService的关键包,本项目中,我的lib目录下同样缺少如图5的包:
![解决java.lang.NoClassDefFoundError: javax/xml/rpc/service错误的方法 - Tian@SpringSide - tzj359314269](http://img2.ph.126.net/IGSy8N13boxeMczxkjAL_Q==/6630519109396271108.png)
图5
将图5中的包添加到lib目录,重启服务器后同样能解决问题。 注:jar包一定要放在WEB-INF下的lib下,否则web项目不生效。
以上缺少的包均可以从网上下载。