工作应用程序中的java.lang.ClassNotFoundException

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (109)

我已经创建并发布了我的第一个Android应用程序。这很简单。它在模拟器和一些手机上工作正常,但我得到这个错误:

java.lang.RuntimeException: Unable to instantiate application cz.teamnovak.droid.Novak ESC Track guide: java.lang.ClassNotFoundException: cz.teamnovak.droid.Novak ESC Track guide in loader dalvik.system.PathClassLoader[/data/app/cz.teamnovak.droid-1.apk]
    at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232)
    at android.app.ActivityThread.access$3000(ActivityThread.java:125)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: cz.teamnovak.droid.Novak ESC Track guide in loader dalvik.system.PathClassLoader[/data/app/cz.teamnovak.droid-1.apk]
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    at android.app.Instrumentation.newApplication(Instrumentation.java:942)
    at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644)
    ... 11 more

任何想法可能导致这种情况?

提问于
用户回答回答于

当我将构建目标改为3.2时发生了类似这样的事情。挖掘周围后,我发现已经命名了jar lib文件夹“lib”而不是“libs”。我只是将它重命名为libs并更新了Java构建路径上的引用,并且所有内容都再次运行。也许这会帮助别人...

用户回答回答于

是的,我有这个完全相同的问题。这是因为我android:name在清单文件中的应用程序节点中指定了属性。

你的Android Manifest文件可能看起来像这样:

   <application 
       android:name="Novak ESC Track guide" 
       android:icon="@drawable/icon" 
       android:label="@string/app_name" 
       android:description="@string/help_text" >

不要使用该android:name属性!除非你已经实现了一个自定义的Application对象。

application:name属性与您的应用的名称无关。这是要作为Application实例加载的特定类的名称。这就是为什么你会得到ClassNotFoundException如果该类不存在。

对于应用程序的名称,请改用android:label此同一个应用程序节点上的属性。

删除它,它应该工作:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:description="@string/help_text" >

扫码关注云+社区