升级到ADT 18后的ClassNotFoundException

Chr*_*erJ 11 eclipse android adt classnotfoundexception

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

我的设置

  1. 我目前在Windows 7 64bit中有ADT 18,SDK 19,elcipse.
  2. 我使用库项目,它使ashare.jar和我所有的外部jar(即dropbox,commons codec)都在Library project(Ashare)的"libs"文件夹中.
  3. 我不使用proguard.

我们怎么看这个问题.

  1. 在eclipse中创建apk> {MyProject}>右键单击> Android工具>导出已签名的应用程序包
  2. 使用"adb install XXX.apk"在模拟器或dev.phone中安装apk
  3. 启动应用程序.然后,BOOM.它抛出错误.

一些值得注意的事情是

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

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
Run Code Online (Sandbox Code Playgroud)

更新2012年5月7日

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

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

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

luj*_*jop 2

将外部 jar 放在 libs 目录中。你可以看看这个链接