2013-08-30 54 views
6

我在設備上運行時遇到此錯誤。我一直在瀏覽這個問題,我很確定我沒有提到過的問題。我的兩個活動都在AndroidManifest中聲明,意圖過濾器在那裏。我沒有任何庫(除了v4支持庫,但聲明它不會改變問題)。我嘗試在我的清單carpedujourproductions.quickpronote.MainActivity中更換.MainActivity,但仍然沒有運氣。我正在運行Android Studio 0.2.5,所以我無法找到如何解決與Java構建路徑/訂單和導出有關的潛在問題java.lang.RuntimeException:無法實例化活動ComponentInfo/java.lang.ClassNotFoundException

我不禁注意到我的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瀏覽等

+0

刷新項目文件時,它可能是Eclipse構建問題。請參閱[這裏](http://stackoverflow.com/a/20421764/2554058)瞭解可能的解決方案。 – user2554058

回答

3

MainActivity.java被排除編譯,所以這個類ISN」 t包含在.apk中。從.idea/compiler.xml文件的excludeFromCompile部分

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

(或者你可以從IDE設置做到這一點):刪除線。

+0

謝謝!我現在有其他(輕微)錯誤,但是你救了我這個! –

2

這個錯誤可能會引發幾個原因,因爲我的經驗,我暴露他們兩個。

  • 如果我們在SVN客戶端插入的資源文件中有一些代碼行,比如smartSVN或者烏龜。

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

    < < < < < < < .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

我有同樣的問題。清理該項目應該訣竅

1

如果您將其他庫添加到項目中,則需要將它們與項目一起導出以防某些類被排除。

右鍵單擊您的項目並轉到屬性。點擊左側面板上的Java Build Path,然後導航至Order and Export選項卡。您可能需要檢查第三方庫以添加它們來構建路徑並將它們導出到apk。另外請注意,libs的命令也很重要,它們的頂層是它們在構建apk時具有的更高屬性。

1

我只是改變

compileOptions{ 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 

compileOptions{ 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

和它的工作就像一個魅力.....

0

這個工作對我說: 在APLICATION類添加這一點。

@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(getBaseContext()); 
} 
相關問題