2013-09-05 99 views
3

在安卓vogella教程就到SQLite的我也遇到惱人的問題與以下錯誤:錯誤「產生的原因:拋出java.lang.ClassNotFoundException:」

09-05 09:18:06.127: E/AndroidRuntime(981): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider" on path: DexPathList[[zip file "/data/app/com.example.de.vogella.android.todos-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.de.vogella.android.todos-1, /system/lib]] 

我跟着多次步步modyfying所有文件有R.類正確重新創建。關於這個錯誤的奇怪之處在於我不知道爲什麼在「com.example.de.vogella.android」中有關於「com.example」的任何內容。這是一種標準的生成名稱嗎?我的所有軟件包/名稱/路徑從未以「com.example」開頭(在此項目中)。我檢查了所有文件並找不到問題。從logcat的

更多輸出:

09-05 09:18:06.127: E/AndroidRuntime(981): FATAL EXCEPTION: main 
09-05 09:18:06.127: E/AndroidRuntime(981): java.lang.RuntimeException: Unable to get provider com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider" on path: DexPathList[[zip file "/data/app/com.example.de.vogella.android.todos-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.de.vogella.android.todos-1, /system/lib]] 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.installProvider(ActivityThread.java:4882) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4485) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4425) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.access$1300(ActivityThread.java:141) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.os.Looper.loop(Looper.java:137) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.main(ActivityThread.java:5103) 
09-05 09:18:06.127: E/AndroidRuntime(981): at java.lang.reflect.Method.invokeNative(Native Method) 
09-05 09:18:06.127: E/AndroidRuntime(981): at java.lang.reflect.Method.invoke(Method.java:525) 
09-05 09:18:06.127: E/AndroidRuntime(981): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
09-05 09:18:06.127: E/AndroidRuntime(981): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-05 09:18:06.127: E/AndroidRuntime(981): at dalvik.system.NativeStart.main(Native Method) 
09-05 09:18:06.127: E/AndroidRuntime(981): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider" on path: DexPathList[[zip file "/data/app/com.example.de.vogella.android.todos-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.de.vogella.android.todos-1, /system/lib]] 
09-05 09:18:06.127: E/AndroidRuntime(981): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) 
09-05 09:18:06.127: E/AndroidRuntime(981): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
09-05 09:18:06.127: E/AndroidRuntime(981): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
09-05 09:18:06.127: E/AndroidRuntime(981): at android.app.ActivityThread.installProvider(ActivityThread.java:4867) 
09-05 09:18:06.127: E/AndroidRuntime(981): ... 12 more 
09-05 09:18:06.156: E/ActivityThread(950): Failed to find provider info for de.vogella.android.todos.contentprovider 

在generall應用程序啓動,但是從一開始就得到崩潰與輸出:

Unfortunatelly, {AppName} has stopped. 

我的AndroidManifest.xml看起來像這樣

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="de.vogella.android.todos" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="13" 
     android:targetSdkVersion="18" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/reminder" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".TodosOverviewActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".TodoDetailActivity" 
      android:windowSoftInputMode="stateVisible|adjustResize" 
      android:label="@string/title_activity_todo_detail" > 
     </activity> 

     <provider 
      android:name=".contentprovider.MyTodoContentProvider" 
      android:authorities="de.vogella.android.todos.contentproviderxxxxxxx" > 
     </provider> 
    </application> 

</manifest> 

我剛剛開始使用android,因此我缺少一些微不足道的東西。

非常感謝。

編輯<provider>發生變化:

<provider 
      android:name=".contentprovider.MyTodoContentProvider" 
      android:authorities="de.vogella.android.todos.contentprovider" > 
     </provider> 

結果:

Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER 
Please check logcat output for more details. 
Launch canceled! 

與logcat的:

09-06 02:02:38.198: E/AndroidRuntime(864): FATAL EXCEPTION: main 
09-06 02:02:38.198: E/AndroidRuntime(864): java.lang.RuntimeException: Unable to get provider com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider" on path: DexPathList[[zip file "/data/app/com.example.de.vogella.android.todos-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.de.vogella.android.todos-1, /system/lib]] 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.installProvider(ActivityThread.java:4882) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4485) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4425) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.access$1300(ActivityThread.java:141) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.os.Looper.loop(Looper.java:137) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.main(ActivityThread.java:5103) 
09-06 02:02:38.198: E/AndroidRuntime(864): at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 02:02:38.198: E/AndroidRuntime(864): at java.lang.reflect.Method.invoke(Method.java:525) 
09-06 02:02:38.198: E/AndroidRuntime(864): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
09-06 02:02:38.198: E/AndroidRuntime(864): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-06 02:02:38.198: E/AndroidRuntime(864): at dalvik.system.NativeStart.main(Native Method) 
09-06 02:02:38.198: E/AndroidRuntime(864): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.de.vogella.android.todos.contentprovider.MyTodoContentProvider" on path: DexPathList[[zip file "/data/app/com.example.de.vogella.android.todos-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.de.vogella.android.todos-1, /system/lib]] 
09-06 02:02:38.198: E/AndroidRuntime(864): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) 
09-06 02:02:38.198: E/AndroidRuntime(864): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
09-06 02:02:38.198: E/AndroidRuntime(864): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
09-06 02:02:38.198: E/AndroidRuntime(864): at android.app.ActivityThread.installProvider(ActivityThread.java:4867) 
09-06 02:02:38.198: E/AndroidRuntime(864): ... 12 more 
09-06 02:02:38.236: E/ActivityThread(834): Failed to find provider info for de.vogella.android.todos.contentprovider 
+3

題外話:請用你的其他問題灰色複選標記來接受這些問題的答案。 – hexafraction

回答

10

我曾經有過這個問題。代碼在以前工作並突然停止工作(在應用程序啓動時崩潰),當我同步並構建舊版代碼時。

修復只是關閉並重新啓動Eclipse並清理項目並清理所有依賴庫項目。然後它再次開始正常工作。

這是在Eclipse某種構建問題,刷新項目文件時。

更新:特別是,如果你不小心修改了「的.classpath」文件(恢復到舊版本)時,Eclipse/Android SDK中可以感到困惑,無法正常生成項目。當您重新啓動Eclipse並清理項目時,Eclipse將重新修改「.classpath」文件並正確構建。

+0

你化險爲夷,我....感謝很多 – DroidDev

+0

,我面臨着類似的問題,在那裏我有系統的應用程序基於Eclipse我現在用ADB安裝-r(機器人工作室),它崩潰在啓動應用程序的更新它並回到以前的版本。任何形式的幫助將不勝感激 – Godather

1

更改這條線在你的代碼:

<provider 
     android:name="de.vogella.android.todos.contentprovider.MyTodoContentProvider" 
     android:authorities="de.vogella.android.todos.contentproviderxxxxxxx" > 
</provider> 


您的問題將得到解決。

+0

看我的編輯。由於 – Jacob

1

不要忘記在你的Manifest中聲明內容提供者。

0

沒有com.example不是標準包名稱,它是根據位於項目根目錄下的AndroidManifest.xml文件生成的文件。

在清單文件中有一個稱爲包的屬性,它給應用程序一個唯一的名稱。

請檢查清單文件和我最好的猜測,修復屬性作爲

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="de.vogella.android.todos" 
+0

可惜的是/res/AndroidManifest.xml和/bin/AndroidManigest.xml是exacly作爲粘貼在第一篇文章 - 不包含「com。示例」。 – Jacob

+0

請您在變奏您的項目爲「com.example」這句話寫下來的結果? – Fatih

相關問題