升级到ADT 18后的ClassNotFoundException

时间:2012-05-07 16:56:18

标签: android eclipse adt classnotfoundexception

自从我将ADT更新为19后,我开始出现以下错误。 每当我启动应用程序时都会出现问题。 我检查了与此相关的所有上一篇文章,但似乎没有任何帮助。任何想法都会非常感激......

我的设置

  1. 我目前在Windows 7 64位中使用ADT 18,SDK 19,elcipse。
  2. 我使用的是库项目,它使ashare.jar和我所有的外部jar(即dropbox,commons codec)都在Library project(Ashare)的“libs”文件夹中。
  3. 我不使用proguard。
  4. 我们如何看待这个问题。

    1. 在eclipse中创建apk> {MyProject}>右键单击> Android工具>导出已签名的应用程序包
    2. 使用“adb install XXX.apk”
    3. 在模拟器或dev.phone中安装apk
    4. 启动应用。然后,BOOM。它抛出错误。
    5. 一些值得注意的事情是

      1. 在我的eclipse更新到ADT到版本18
      2. 后,它开始发生了
      3. 只有当我制作签名的apk并在模拟器或dev.phone中运行它时才会发生。
      4. 如果我使用{MyProject}>运行我的应用程序,我看不出问题右键单击>运行方式> Android应用程序
      5. 当我检查classes.dex内部时,我发现那里缺少一些类。我不确定,但我觉得Build过程不包括classes.dex中的所有类。
      6. 在导出期间,eclipse控制台中没有错误(我在Android> Build> Build output setting中使用详细选项)
      7. Java异常

        05-07 08:52:48.336: D/AndroidRuntime(3055): Shutting down VM
        05-07 08:52:48.336: W/dalvikvm(3055): threadid=1: thread exiting with uncaught exception (group=0x40a3e1f8)
        05-07 08:52:48.340: E/AndroidRuntime(3055): FATAL EXCEPTION: main
        05-07 08:52:48.340: E/AndroidRuntime(3055): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.acj0.barcodeexpdemo/com.acj0.barcodeexpdemo.Launcher}: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.os.Handler.dispatchMessage(Handler.java:99)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.os.Looper.loop(Looper.java:137)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.main(ActivityThread.java:4424)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.reflect.Method.invokeNative(Native Method)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.reflect.Method.invoke(Method.java:511)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at dalvik.system.NativeStart.main(Native Method)
        05-07 08:52:48.340: E/AndroidRuntime(3055): Caused by: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
        05-07 08:52:48.340: E/AndroidRuntime(3055):     ... 11 more
        

        更新5/7/2012

        • 我所有的jar都在Library项目的“libs”文件夹中,我看到所有这些都包含在“Android Dependencies”中

        更新5/18/2012 - 暂时解决

        • 我找到了临时解决方案。在运行“导出已签名的应用程序包”之前,我选中了“清除”而没有“自动构建”选项。然后,我再也看不到错误了。我不知道为什么会这样。如果您有任何想法,请告诉我。

4 个答案:

答案 0 :(得分:2)

将你的外部jar放在libs目录中。 您可以查看this link

答案 1 :(得分:1)

我遇到了同样的问题,尽管我按照link lujop mentioned中的描述做了所有事情。这是缺少的:

  1. 右键点击您的项目>构建路径>配置构建路径...
  2. 点击“订购和导出”标签
  3. 勾选库(Android x.x.x,Android Dependencies)旁边的复选框以及您指的其他项目
  4. 清理项目
  5. 应该是它
  6. 我希望有所帮助!

答案 2 :(得分:0)

我也有这个。这是我的修复。 按照这里: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

在那里没有“参考图书馆”。如果有任何右键单击它们并从构建路径中删除。该文件夹现在应该已经消失,您应该只留下“Android Dependencies”

答案 3 :(得分:0)

这让我疯了一整天,只是觉得愚蠢的我在清单中的应用程序名称是错误的。 对于应用程序名称,我有: 机器人:名称= “com.diack.locdatafeeds”

它错过了我的主要活动 机器人:名称= “com.diack.locdatafeeds.Mainactivity”

希望它有助于某人