怎么解决java.lang.NoClassDefFoundError错误

   在项目中进行开发的,做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中是不可用的,这个发生可能的原因如下:

  1. 对应的Class在java的classpath中不可用
  2. 你可能用jar命令运行你的程序,但类并没有在jar文件的manifest文件中的classpath属性中定义
  3. 可能程序的启动脚本覆盖了原来的classpath环境变量
  4. 因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致
  5. 检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的
  6. 如果你工作在J2EE的环境,有多个不同的类加载器,也可能导致NoClassDefFoundError


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值