在Android中运行时奇怪的NoClassDefFoundError

时间:2014-06-01 13:36:37

标签: java android eclipse

我已经尝试在这里和其他地方查看所有其他NoClassDefFoundError线程,但它们似乎都是一个不同的问题。

我的活动是指自定义FragmentPagerAdapter - 我们称之为MyFragmentPagerAdapter。

活动引用它:

MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(getFragmentManager());
ViewPager viewPager = (ViewPager) findViewById(R.id.form_pager);
viewPager.setAdapter(pagerAdapter);

这一切似乎都在Eclipse中编译和构建完美。 Eclipse当然可以找到所有类 - 它自动为我填充import语句。

然而,当我尝试在Android(模拟器或设备)中运行该类时,我得到了MyFragmentPagerAdapter的NoClassDefFoundError,并且(当然)应用程序崩溃了。

我尝试删除设备上的APK并重新安装,以防这是部署问题,但它没有帮助。

这与某些第三方库无关 - 它是我自己的类,它无法找到!

我也尝试过“清理”项目。

我已经解压缩了apk并检查了

的输出
dexdump classes.dex | grep PagerAdapter

并且在那里有对我的类的引用,所以我只能假设已编译的类正在使用它而不是apk - 这让我更加困惑。

1 个答案:

答案 0 :(得分:0)

NoClassDef引用引用的类(在本例中为#34; MyFragmentPagerAdapter")而不是类本身(这是ClassNotFoundException)。

检查班级中的导入" MyFragmentPagerAdapter"并确保它们都在您的Android应用程序的类路径中,即通过检查libs文件夹和(最终)您在项目中引用的其他Android库。

希望这有帮助。