java.lang.RuntimeException:无法实例化活动ComponentInfo / java.lang.ClassNotFoundException

时间:2013-08-30 12:34:22

标签: android

我在设备上运行时遇到此错误。我一直在浏览这个问题,我很确定我没有提到的问题。我的两个活动都在AndroidManifest中声明,而intent过滤器就在那里。我没有任何库(除了v4支持库,但声明它不会改变问题)。我尝试用carpedujourproductions.quickpronote.MainActivity替换我的Manifest .MainActivity,但仍然没有运气。我正在运行Android Studio 0.2.5,所以我找不到如何解决与Java Build Path / Order and Export相关的潜在问题

我忍不住注意到我的MainActivity图标在树的左上角有一个灰色十字架。

Logcat:

E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{carpedujourproductions.quickpronote/carpedujourproductions.quickpronote.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "carpedujourproductions.quickpronote.MainActivity" on path: DexPathList[[zip file "/data/app/carpedujourproductions.quickpronote-2.apk"],nativeLibraryDirectories=[/data/app-lib/carpedujourproductions.quickpronote-2, /vendor/lib, /system/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2281)
        at android.app.ActivityThread.access$600(ActivityThread.java:148)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1263)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5124)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:110)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.ClassNotFoundException: Didn't find class "carpedujourproductions.quickpronote.MainActivity" on path: DexPathList[[zip file "/data/app/carpedujourproductions.quickpronote-2.apk"],nativeLibraryDirectories=[/data/app-lib/carpedujourproductions.quickpronote-2, /vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
        ... 12 more

随意浏览AndroidManifest,MainActivity.java,FirstRun.java等代码here

5 个答案:

答案 0 :(得分:3)

您的MainActivity.java被排除在编译之外,因此该类不包含在.apk中。删除行:

<file url="file://$PROJECT_DIR$/src/carpedujourproductions/quickpronote/MainActivity.java" />

来自excludeFromCompile文件的.idea/compiler.xml部分(或者您可以从IDE设置执行此操作)。

答案 1 :(得分:2)

这个错误可能会因多种原因而引发,根据我的经验,我会暴露其中两个。

  • 如果我们在SVN Client插入的资源文件中有一些代码行,比如smartSVN或tortoise。

    <<<<<<< .mine
        <string name="pathConfiguration">http://jorgesys/app/config_development.xml</string>
    =======    
    
    >>>>>>> .r124
    

    &LT;&LT;&LT;&LT;&LT;&LT;&LT; .mine

    删除这些字符:

    <string name="pathConfiguration">http://jorgesys/app/config_development.xml</string>
    
  • .classpath文件中添加行

    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    

这是一个例子:

  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

现在它有效! =)

它将修复异常

答案 2 :(得分:2)

我遇到了同样的问题。清理项目应该可以解决问题

答案 3 :(得分:1)

如果您在项目中添加其他库,则需要将其与项目一起导出,以防某些类被排除。

右键单击您的项目并转到“属性”。点击左侧面板上的Java Build Path,然后导航至Order and Export标签。您可能需要检查第三方库,以便将它们添加到构建路径并将它们导出到apk。另请注意,lib的顺序也很重要,它们在构建apk时具有更高的属性。

答案 4 :(得分:1)

我刚刚改变了

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

它就像一个魅力......