ClassNotFoundException, org.jboss.netty.channel.ChannelPipelineFactory 缺少jar包【远程调用dubbo分布式服务框架遇到的问题】

转载 2015年07月09日 11:53:19

文章来源:http://blog.csdn.net/cuidiwhere/article/details/20402347


现象&异常

    在开发机上,myApp web应用可以正常访问。但在daily环境可以访问index.htm,访问其他页面出现异常,浏览器内显示的异常内容为 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.myCompany.buc.client.service.provider.AclServiceProvider  
  2.         at com.myapp.buc.MyAppSecurityHandler.hasUrlAuth(MySecurityHandler.java:70)  
  第一反应是负责权限控制的第三方服务AclServiceProvider没有提供服务。但仔细一想异常是 NoClassDefFoundError,说明该类没有初始化,查看日志文件myApp.log里异常详情为:   

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Caused by: java.lang.ClassNotFoundException: org.jboss.netty.channel.ChannelPipelineFactory  
  2.         at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)  
这才是问题的症结所在,把问题定位准了,就完成了解决问题80%的工作量。


解决方法

  •       第一步:定位该类在哪个jar包

     由于开发机上是可以正常启动的,于是在Eclipse里利用Ctrl+T查找 ChannelPipelineFactory, 发现workspace里有两个jar包都包含该类。这两个ja包为

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. jboss.jboss-netty-3.2.5.Final.jar  
  2. netty-3.6.3.Final.jar  

于是在myApp.war包里查找这两个jar包,可以预测不能找到。实验结果跟预测一致,这两个netty相关的jar包没被打包到myApp.war里。

  •     第二步:该引入哪个jar包呢

    虽然找到了该类位于的jar包,但应该依赖哪一个呢? 于是查看线上机器的war包,发现线上机器依赖的是netty-3.6.3.Final.jar,在pom.xml里添加该依赖即解决问题


思考

    虽然问题解决了,但心中有个疑惑: 为什么开发机没有依赖netty-3.6.3.Final.jar,web应用依然可以正常工作呢?

    猜测:开发机和daily环境使用的web服务器不同,开发机还使用了web插件,有可能org.jboss.netty.channel.ChannelPipelineFactory在开发机web环境中已经存在。



ClassNotFoundException, org.jboss.netty.channel.ChannelPipelineFactory 缺少jar包

现象&异常     在开发机上,myApp web应用可以正常访问。但在daily环境可以访问index.htm,访问其他页面出现异常,浏览器内显示的异常内容为  Caused by: java.la...
  • cuidiwhere
  • cuidiwhere
  • 2014年03月03日 22:18
  • 16928

Netty:JBOSS的 JAVA NIO开发开源框架

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NI...
  • bigtree_3721
  • bigtree_3721
  • 2016年05月13日 21:21
  • 2750

JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误

JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误 2012年10月06日 ⁄ 综合 ⁄ 共 6...
  • evilcry2012
  • evilcry2012
  • 2015年11月03日 09:15
  • 612

Failed to load class org.slf4j.impl.StaticLoggerBinder

Failed to load class org.slf4j.impl.StaticLoggerBinder 2010-05-12 10:06 This error...
  • gayayzy
  • gayayzy
  • 2011年11月28日 22:28
  • 1939

最近写mapreduce程序从hbase中抽取程序遇到的一些问题

1,报错信息 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/...
  • Searcher_Recommeder
  • Searcher_Recommeder
  • 2015年11月28日 16:25
  • 1491

从dubbo看Netty使用

Netty是个高性能的Java网络传输框架,在很多中间件或者分布式框架中几乎都能看到它的身影。既然Netty这么受欢迎,那到底怎么把netty嵌入到我们的系统中了?笔者在几年前就接触了Netty,也开...
  • csujiangyu
  • csujiangyu
  • 2017年05月11日 09:32
  • 5707

Hibenate错误汇总:java.lang.NoClassDefFoundError:

一、 java.lang.NoClassDefFoundError:org.apache.lucene.index.CorruptIndexException 因为缺少lucene-core-3.0....
  • LVfaith66883460
  • LVfaith66883460
  • 2016年02月29日 21:23
  • 424

总结jboss控制台,得出一下结论(数据库连接池相关)

jboss控制台中: http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.jca%3Aservi...
  • pcera
  • pcera
  • 2006年01月12日 19:22
  • 2936

Netty+Zookeeper实现一个类似Dubbo的RPC框架

一、说明 1、RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web...
  • Tongdao
  • Tongdao
  • 2016年05月15日 19:22
  • 10017

storm+kafka整合异常处理

[摘要:1 拷贝kafka依附jar包到storm lib [root@hdmaster libs]# cp kafka_2.10-0.8.2.1.jar /opt/apache-storm-0.9....
  • w1014074794
  • w1014074794
  • 2016年03月20日 21:27
  • 3616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ClassNotFoundException, org.jboss.netty.channel.ChannelPipelineFactory 缺少jar包【远程调用dubbo分布式服务框架遇到的问题】
举报原因:
原因补充:

(最多只允许输入30个字)