2011-03-25 108 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项目)终于解决了它。

相关问题