2013-06-05 58 views
1

我重新安裝了ADT Bundle,因爲在更新eclipse之後我遇到了一些問題。Android:ClassNotFoundException

現在,我得到下面的異常,當我想測試我的應用程序:

06-05 10:33:35.770: E/AndroidRuntime(17751): FATAL EXCEPTION: main 
06-05 10:33:35.770: E/AndroidRuntime(17751): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{foo.bar/foo.bar.TabsFragmentActivity}: java.lang.ClassNotFoundException: foo.bar.TabsFragmentActivity in loader dalvik.system.PathClassLoader[/data/app/foo.bar-2.apk] 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1670) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.os.Looper.loop(Looper.java:130) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread.main(ActivityThread.java:3695) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at java.lang.reflect.Method.invokeNative(Native Method) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at java.lang.reflect.Method.invoke(Method.java:507) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at dalvik.system.NativeStart.main(Native Method) 
06-05 10:33:35.770: E/AndroidRuntime(17751): Caused by: java.lang.ClassNotFoundException: foo.bar.TabsFragmentActivity in loader dalvik.system.PathClassLoader[/data/app/foo.bar-2.apk] 
06-05 10:33:35.770: E/AndroidRuntime(17751): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
06-05 10:33:35.770: E/AndroidRuntime(17751): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
06-05 10:33:35.770: E/AndroidRuntime(17751): ... 11 more 

這裏的清單:

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.BLUETOOTH" /> 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="foo.bar.ui.tabs.TabsFragmentActivity" 
      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="foo.bar.ui.activities.EditActivity" 
      android:parentActivityName="foo.bar.ui.tabs.TabsFragmentActivity" 
      android:windowSoftInputMode="stateHidden"> 
     </activity> 
     <activity 
      android:name="foo.bar.ui.activities.LocationActivity" 
      android:label="Select a location" 
      android:parentActivityName="foo.bar.ui.tabs.TabsFragmentActivity" > 
     </activity> 
     <activity 
      android:name="foo.bar.ui.activities.DeleteLocationsActivity" 
      android:label="Delete locations" 
      android:parentActivityName="foo.bar.ui.activities.LocationActivity" > 
     </activity> 
     <activity 
      android:name="foo.bar.ui.activities.ShowLocationActivity" 
      android:parentActivityName="foo.bar.ui.activities.LocationActivity" > 
     </activity> 
     <activity 
      android:name="foo.bar.ui.activities.ShowSnapshotActivity" 
      android:parentActivityName="foo.bar.ui.activities.ShowLocationActivity" > 
     </activity> 
     <service 
      android:name="foo.bar.service.SnapshotService" > 
     </service> 

    </application> 

</manifest> 

我認爲它已經做了一些做的包裝,即。它看着活動的錯誤地點,但我不知道如何解決它。

我試着清理項目並在清單中只使用「.activityname」,這兩個都不起作用。

編輯:我現在通過將TabsFragmentActivity移動到標準包,然後返回到ui.tabs。

不知道爲什麼這工作雖然。

感謝您的幫助

+0

你可以發佈活動代碼和項目包結構嗎? –

回答

3

從logcat的:

java.lang.ClassNotFoundException: foo.bar.TabsFragmentActivity 

從你的清單:

android:name="foo.bar.ui.tabs.TabsFragmentActivity" 

所以,我的建議是:

  • 舉動TabsFragmentActivity到foo.bar.ui.tabs
  • 或更改機器人:名字= 「foo.bar.ui.tabs.TabsFragmentActivity」 到Android:NAME = 「foo.bar.TabsFragmentActivity」

注:

如果你最近更新了你的ADT插件,那麼:

在Eclipse中右鍵單擊project - > properties - > java Build Path - > Order &導出並檢查Android私有庫(Android支持Li以前的brary)用於您的項目以及您正在使用的所有其他庫項目。再次清理並構建。

希望這會有所幫助。

+0

TabsFragmentActivity已經在包中foo.bar.ui.tabs – ArtVandelay

+0

您可以將代碼粘貼到發生此異常的位置。 – SKK

+0

只要我啓動應用程序就會發生。我不認爲有任何代碼參與,因爲它在更新 – ArtVandelay

0

我還以爲你從Refactor.At那個時候你問一些選項,比如

重命名包名
  • 更新引用
  • 重命名子包
  • 更新文本occurence .....
  • 更新Java文本文件...

所以你必須做出改變,因爲你想從這裏。,, 現在做一件事,如果你記得它,再次使你的包名稱爲Previous,然後再次重構它。可能這會有所幫助。

或使用Android工具--->重命名應用程序包裝。

+0

http://stackoverflow.com/questions/6500042/refactoring-package-name-breaks-entire-app檢查此... –

0

我遇到這個錯誤,只有當我輸入我從GitHub克隆項目,我的解決辦法是這樣的:

  1. 右鍵單擊您的項目在Eclipse中,選擇Properties

  2. 選擇Java Build Path在左側,然後選擇Order and Export標籤

    • Android 4.2(or any other version that you are using)
    • Android Private Libraries
    • Android Dependencies
  3. OK然後做一個項目,清潔

以上這些名稱可能會有所不同,這工作每次當我接到ClassNotFound例外的時間。