45

I am using ActionBarSherlock as a library project in a project which is a library itself. It was all working fine until I moved the project to a new computer and updated the SDK tools.

I have this error I don't understand. When I create a class extending SherlockFragment like this:

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment {
    ... 
}

I have the following compilation error:

The type android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files

I have checked the following:

  • ActionBarSherlock is imported as a library
  • No apparent errors in build path (no red cross) and actionbarsherlock.jar is present
  • The support library is in the ActionBarSherlock project and NOT in other depending projects

Anything else?

4

9 回答 9

67

自从我更新了 SDK 后,我遇到了和你一样的问题。我已经通过这样做(在eclipse上)解决了我的问题:

  • 右键单击操作栏 sherlock library => Properties=> Java Build Path=> Order and Exporttab => 检查android support v4Android Private Libraries选择 Ok
  • 右键单击您的个人项目并转到 properties => java build path =>check Android Private Libraries
  • 清理两个项目,它应该可以工作。
于 2013-05-16T20:20:21.110 回答
11

塞巴斯蒂安的回答实际上让我找到了解决方案。但是,重要的是要提到必须手动将支持库添加到构建路径中,以便能够检查它以进行导出。为了将来参考,以下是为我解决问题的步骤:

  1. 确保支持库位于 ABS 项目的 libs 文件夹中,而不是其他任何地方
  2. 右键单击库->构建路径->添加到构建路径
  3. 右键单击 ABS 项目 --> 属性 --> Java 构建路径 --> 订购和导出 --> 检查 android-support-v4.jar 文件并保存
  4. 右键单击包含 ABS 的项目 --> Properties --> Java Build Path --> Order and Export --> 勾选“Android Private Libraries”并保存
  5. 如果您的依赖层次结构中有其他项目,请对所有这些项目执行第 4 步
  6. 清理整个工作区(或所有受影响的项目)并希望最好。

然而,对我来说,为什么这必须如此复杂是个谜——正如 Josh 所提到的,Eclipse 与 Android 和具有几个依赖项的大型项目相结合很难使用,我希望这将在不久的将来得到改进。

于 2013-05-16T23:07:37.173 回答
10

就我而言,我使用了 2 个需要 android 支持库的 Android 库。问题是这两个库都有不同版本的 Android 支持库。

要解决此问题:右键单击库项目 => Android 工具 => 添加支持库。

对每个库重复此操作。

于 2014-02-05T15:48:17.117 回答
8

我有同样的问题。有2个不同的图书馆。从您的主项目中删除支持库

于 2013-06-23T10:16:42.920 回答
4

这是最简单的解决方案:

右键单击您的项目文件夹->构建路径->配置构建路径->添加外部罐子(从库选项卡)->选择“android-support-v4.jar”文件。

(它将位于 Android SDK 文件夹中,这里是通用路径“android-sdk\extras\android\support\v4”)。

在这个干净之后,你的项目和快乐的编码......

于 2014-06-19T09:43:04.490 回答
1

在我的情况下,我遇到了同样的问题,我通过右键单击项目解决了它->构建路径->配置构建路径->“从左侧列表中选择 Android”->“从右侧选择构建项目目标的复选框手面板”->单击应用->单击确定

于 2014-04-04T23:41:05.867 回答
0

对我有用的方法与上述线程中@Sebastien 和@FleshWound 的解决方案略有不同。

  • 从 /MyProject/libs/ 复制文件“android-support-v4.jar”并覆盖 /ActionBarSherlock/libs/android-support-v4.jar 中的文件。
  • 转到“项目属性”->“Java 构建路径”->“添加”-> ActionBarSherlock 项目。
  • 清洁项目。
于 2014-06-24T03:48:53.987 回答
0

我正在使用 Android Studio 并面临类似的问题(用于加载 ListFragment)。我最初导入了库:

导入android.support.v4.app.ListFragment;

然后在应用程序目录中更新 build.gradle:确保依赖项部分包含支持库-

  dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:20.0.0 }
于 2014-11-05T03:33:46.173 回答
0

我是stackoverflow的新手。但是,这是我在这里的解决方案或经验。我通过项目属性解决了这个问题-->左侧面板上的“Android”-->添加-->从下拉菜单中选择所需的支持库-->“应用”-->确定

这样就搞定了。即使在 Java Build Path 的“Order and Export”中未选中“Android Private Libraries”,这也有效。

于 2015-08-12T19:25:38.477 回答