2011-03-25 129 views
1

我不明白可以在這個例外背後。這是我的應用程序的一個用戶匿名舉報,我無法複製它。在Android中導致此ClassNotFoundException的原因是什麼?

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cz.fhejl.pubtran/cz.fhejl.pubtran.CustomMainActivity}: java.lang.ClassNotFoundException: cz.fhejl.pubtran.CustomMainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cz.fhejl.pubtran-2.apk] 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
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.fhejl.pubtran.CustomMainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cz.fhejl.pubtran-2.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.newActivity(Instrumentation.java:1021) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
... 11 more 

我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="cz.fhejl.pubtran" 
    android:versionCode="38" 
    android:versionName="3.6" 
    android:installLocation="auto"> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/appName" 
     android:theme="@style/Theme.Pubtran"> 
     <activity 
      android:name="cz.fhejl.pubtran.CustomMainActivity"> 
      <intent-filter> 
       <action 
        android:name="android.intent.action.MAIN" /> 
       <category 
        android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action 
        android:name="cz.fhejl.pubtran.MAIN_ACTIVITY" /> 
       <category 
        android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="cz.fhejl.pubtran.CustomResultsActivity"> 
      <intent-filter> 
       <action 
        android:name="cz.fhejl.pubtran.RESULTS_ACTIVITY" /> 
       <category 
        android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="cz.fhejl.pubtran.JourneyActivity" /> 
     <activity 
      android:name="cz.fhejl.pubtran.PreferencesActivity" 
      android:theme="@android:style/Theme.Light" 
      android:label="@string/settings" /> 
     <activity 
      android:name="cz.fhejl.pubtran.MapActivity" /> 
     <activity 
      android:name="cz.fhejl.pubtran.LanguageActivity" /> 
     <activity 
      android:name="cz.fhejl.pubtran.FavouritesActivity" /> 
     <service 
      android:name="cz.fhejl.pubtran.MapDownloaderService" /> 
     <uses-library 
      android:name="com.google.android.maps" /> 
    </application> 

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

    <uses-permission 
     android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission 
     android:name="android.permission.BROADCAST_STICKY" /> 
    <uses-permission 
     android:name="android.permission.INTERNET" /> 
    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-feature 
     android:name="android.hardware.location.network" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location.gps" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.touchscreen" 
     android:required="true" /> 
</manifest> 
+0

什麼類型的手機,供應商 – apesa 2011-03-25 19:19:57

+0

不幸的是,報告除堆棧跟蹤外沒有包含任何其他信息。 – fhucho 2011-03-25 19:29:29

+0

請發佈您的清單代碼。它看起來像你的應用程序使用地圖jar? - 他們的設備上是否有谷歌地圖(並非全部)? – 2011-03-25 20:04:38

回答

0

不CustomMainActivity子類MapActivity?如果是這樣,這可能是由於您的應用在沒有Google API的Android設備上運行(我沒有測試過),或者缺少/system/framework/com.google.android.maps.jar 。

在仿真器上測試應該相當容易 - 只需創建一個不帶Google API的AVD。

菲爾Lello

+0

CustomMainActivity不具有MapActivity的子類,但我在其中一項活動中使用了Google Maps。但是,當設備沒有Google API時,安裝應該會失敗,我認爲... – fhucho 2011-03-25 20:18:59

+0

我很難過。這份報告是如何進來的?它是自動的嗎?如果您沒有與記者聯繫,並且這不是自動報告,那麼可能是有人篡改了應用的結果 - 普通用戶不會看到堆棧跟蹤。無論哪種方式,如果沒有與記者聯繫瞭解更多的細節(例如設備,Android版本,谷歌應用程序),我認爲你不會再有任何進一步的了。 – 2011-03-26 20:34:49

+0

當任何Android應用崩潰時,用戶可以選擇匿名向開發者發送錯誤報告。這是Android OS的一項功能。 – fhucho 2011-03-26 20:49:28

3

今天在升級到最新的ADT/SDK後,這類問題。同樣對我來說,例外是

Unable to instantiate activity 

花了我很長一段時間。檢查我使用谷歌apis(對於地圖),使用庫,清理項目等

刪除.project並添加一個新的(創建新的android項目)終於解決了它。

相關問題