无法解析android/support/v4/app/FragmentActivity的超类

7
我有一个项目使用了一个继承自FragmentActivityWelcomeActivity。我使用的是支持库,所以android-support-v4.jarlibs文件夹中。当我运行这个应用程序时没有问题。
然而,我想将ActionBarSherlock添加到项目中。在ABS项目中,我使用了actionbarsherlock-plugin-maps-4.1.0.jarandroid-support-v4-r6-googlemaps.jar放在libs文件夹中。在我的应用程序项目中,我添加了ABS库,但当我尝试运行该应用程序时,出现以下错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;

为了解决这个问题,我从应用的libs文件夹中删除了android-support-v4.jar。当我现在启动我的应用程序时,应用程序崩溃,并显示以下logcat:
08-01 18:59:11.182: W/dalvikvm(13338): Unable to resolve superclass of Landroid/support/v4/app/FragmentActivity; (620)
08-01 18:59:11.182: W/dalvikvm(13338): Link of class 'Landroid/support/v4/app/FragmentActivity;' failed
08-01 18:59:11.182: W/dalvikvm(13338): Unable to resolve superclass of Lcom/myapp/welcome/WelcomeActivity; (109)
08-01 18:59:11.182: W/dalvikvm(13338): Link of class 'Lcom/myapp/welcome/WelcomeActivity;' failed
08-01 18:59:11.182: E/dalvikvm(13338): Could not find class 'com.myapp.welcome.WelcomeActivity', referenced from method com.myapp.MainDispatcherActivity.startWelcomeActivity
08-01 18:59:11.182: W/dalvikvm(13338): VFY: unable to resolve const-class 690 (Lcom/myapp/welcome/WelcomeActivity;) in Lcom/myapp/MainDispatcherActivity;
08-01 18:59:11.182: D/dalvikvm(13338): VFY: replacing opcode 0x1c at 0x0002
08-01 18:59:11.182: D/dalvikvm(13338): VFY: dead code 0x0004-000b in Lcom/myapp/MainDispatcherActivity;.startWelcomeActivity ()V
08-01 18:59:11.182: D/AndroidRuntime(13338): Shutting down VM
08-01 18:59:11.182: W/dalvikvm(13338): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-01 18:59:11.182: E/AndroidRuntime(13338): FATAL EXCEPTION: main
08-01 18:59:11.182: E/AndroidRuntime(13338): java.lang.NoClassDefFoundError: com.myapp.welcome.WelcomeActivity
08-01 18:59:11.182: E/AndroidRuntime(13338):    at com.myapp.MainDispatcherActivity.startWelcomeActivity(MainDispatcherActivity.java:33)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at com.myapp.MainDispatcherActivity.startProperActivity(MainDispatcherActivity.java:26)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at com.myapp.MainDispatcherActivity.onCreate(MainDispatcherActivity.java:19)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.os.Looper.loop(Looper.java:130)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at android.app.ActivityThread.main(ActivityThread.java:3683)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at java.lang.reflect.Method.invokeNative(Native Method)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at java.lang.reflect.Method.invoke(Method.java:507)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
08-01 18:59:11.182: E/AndroidRuntime(13338):    at dalvik.system.NativeStart.main(Native Method)

我该如何解决这个问题?

编辑
我有另一个使用相同的 ABS 库且正常运行的项目。我不知道我做了什么不同的事情,或者哪些设置是错误的。

4个回答

13

看起来这个错误是因为我在AndroidManifest.xml文件的<application>标签中没有加入这行代码:

<uses-library android:name="com.google.android.maps" />

9

点击 这里

我认为问题可能在于构建路径-> 配置构建路径 -> 顺序和导出中,“android-support-v4.jar”需要被勾选。

希望对您有用。


这个评论非常有帮助。 - Evgeny Vinnik
谢谢,这就是了。支持的Jar包已经被列入列表,但没有被选中。 - asgs
非常感谢,它确实有效。但通常android-support-v4.jar被添加到“android私有库”中。为什么有时会违反这个规则? - liam xu

2

您是否已经为actionbarsherlock库项目设置了编译器兼容性?右键单击库项目,进入属性。在Java编译器下,确保兼容性设置为1.6。我遇到了类似的问题,并发现兼容性设置为1.5。


0

我自己没有遇到过这个问题,但我认为doc中关于ActionBarSherlock的说明说你需要扩展SherlockFragmentActivity而不是FragmentActivity。这可能不是唯一的问题,但它是一个问题。


“WelcomeActivity”不需要ActionBar,所以“FragmentActivity”就足够了。然而,我尝试过使用“SherlockFragmentActivity”,但没有成功。 - nhaarman
很抱歉无法提供更多帮助!也许这个ABS教程(http://www.youtube.com/watch?v=4GJ6yY1lNNY)对您有用?我在ABS谷歌小组上找到了一篇帖子,其中有人遇到了类似的问题,涉及标准支持库与googlemaps库:(https://groups.google.com/forum/?fromgroups#!searchin/actionbarsherlock/library/actionbarsherlock/UlmlYAyUruY/rFGrA86gVx0J),但是没有得到答复。恐怕这就是我所能提供的全部内容了。 - Jon O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接