在项目中进行开发的,做app首页的时候,放了一个横向的HorizontalScrollView ,里面添加子控件,HotGroupItemView,当不滑动的时候,点击里面的子View,可以正常
的跳转,但是滑动后,遇到下面这个异常,但是看代码明明这个类存在,
java.lang.NoClassDefFoundError: com.hx.socialapp.activity.social.GroupDetailActivity$2
at com.hx.socialapp.activity.social.GroupDetailActivity.initView(GroupDetailActivity.java:164)
at com.hx.socialapp.activity.social.GroupDetailActivity.onCreate(GroupDetailActivity.java:90)
at android.app.Activity.performCreate(Activity.java:6289)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5981)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
第一时间,网上搜索答案。一搜,就找到了这个哥们的博客:http://blog.csdn.net/jamesjxin/article/details/46606307
原来发生这个问题,是因为这个类存在,java虚拟机在编译的时候,是可以找到这个类,但是在运行的时候,却找不到这个类了。和ClassNotFoundException有本质的区别,ClassNotFoundException是因为在编译时我们就知道错误发生,并且完全是由于环境的问题导致。而如果你在J2EE的环境下工作,并且得到NoClassDefFoundError的异常,而且对应的错误的类是确实存在的,这说明这个类对于类加载器来说,可能是不可见的。
怎么解决NoClassDefFoundError错误
根据前文,很明显NoClassDefFoundError的错误是因为在运行时类加载器在classpath下找不到需要加载的类,所以我们需要把对应的类加载到classpath中,或者检查为什么类在classpath中是不可用的,这个发生可能的原因如下:
- 对应的Class在java的classpath中不可用
- 你可能用jar命令运行你的程序,但类并没有在jar文件的manifest文件中的classpath属性中定义
- 可能程序的启动脚本覆盖了原来的classpath环境变量
- 因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致
- 检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的
- 如果你工作在J2EE的环境,有多个不同的类加载器,也可能导致NoClassDefFoundError