罐子不匹配!解决您的依赖性


71

重现步骤:

  1. 创建一个Android项目“ MyApp”
  2. 导入ActionBarSherlock(ABS),Directional ViewPager(DVP)或任何其他使用android支持库的开源库。
  3. 将库添加到项目“ MyApp”

控制台日志:

[2013-04-17 14:27:12 - MyApp] Found 2 versions of android-support-v4.jar in the dependency list,
[2013-04-17 14:27:12 - MyApp] but not all the versions are identical (check is based on SHA-1 only at this time).
[2013-04-17 14:27:12 - MyApp] All versions of the libraries must be the same at this time.
[2013-04-17 14:27:12 - MyApp] Versions found are:
[2013-04-17 14:27:12 - MyApp] Path: C:\Users\santhosh\My_Workspace\DVP_library\libs\android-support-v4.jar
[2013-04-17 14:27:12 - MyApp]   Length: 140011
[2013-04-17 14:27:12 - MyApp]   SHA-1: fc834ac8147bc4ed0b555f90f500a57d4232c448
[2013-04-17 14:27:12 - MyApp] Path: C:\Users\santhosh\My_Workspace\abs_library\libs\android-support-v4.jar
[2013-04-17 14:27:12 - MyApp]   Length: 271754
[2013-04-17 14:27:12 - MyApp]   SHA-1: 53307dc2bd2b69fd5533458ee11885f55807de4b
[2013-04-17 14:27:12 - MyApp] Jar mismatch! Fix your dependencies

我知道我想从libs文件夹中删除android-support-v4.jar并为所有文件保留一个副本。但是,这并不能解决我的问题。

当我尝试从MyApp删除android-support-v4.jar时,出现以下错误。

 Problems encountered while deleting resources.
 Could not delete 'C:\Users\santhosh\My_Workspace\MyApp\libs\android-support-v4.jar'.

当我尝试从ABS删除android-support-v4.jar时,出现以下错误

 ????? cannot be resolved to a type error.

我试图清理项目,修复项目属性。重新启动Eclipse,构建,导入并再次添加。我试图将libs文件夹中的支持jar从一个库复制到另一个库。删除两个库中的支持jar并将其添加到MyApp项目。什么都没有为我工作。

如果我尝试添加单个库,则效果很好。尝试将2个或更多库添加到单个项目时,我遇到了问题。

在MyApp中添加两个库时出现错误:

The project was not built since its build path is incomplete. 
Cannot find the class file for android.support.v4.app.FragmentActivity. 
Fix the build path then try building this project MyApp Unknown Java Problem
The type android.support.v4.app.FragmentActivity cannot be resolved. It is indirectly referenced from required .class files MyActivity.java/MyApp/src/com/santhosh/myapp    line 10 Java Problem
Jar mismatch! Fix your dependencies MyApp Unknown Android Dependency Problem

1
查看是否可行:stackoverflow.com/q/14994237/450534。我认为应该,但还是要检查一下。
Siddharth Lele 2013年

1
尝试从您项目的lib文件夹中删除jar文件
rOcKiNg RhO 2013年

Answers:


49

仅将图书馆项目用于支持图书馆

ADT 22开始,使用Eclipse Juno

我不认为以上任何一种都是最好的答案。我也不认为建议external jar不再在Eclipse中使用该功能(AFAIK)。

相反,对我有用的是创建一个单独的空库项目。

然后使用 Android tools>Add Support Library获取所需或想要的最新版本。

然后从所有其他项目中删除支持库

最后,对于需要它的每个项目,请添加对新Library项目的引用。

(project properties)> Android> (Library box)>Add...

这样,您所有的项目将只有一个源,可以使用和更新支持库。这也使javadocs更容易上手。

有关如何设置javadocs的信息,请参见:

如何将Javadoc或源附加到libs文件夹中的jars?


1
可能有效!但我认为最简单的方法就是我建议的方法!但是您的答案仍然是您所建议的正确
Muhannad A.Alhariri

1
谢谢:)实际上,我对任何有效的方法都是坚定的信念。您是否能够使javadocs正常工作?
2013年

如果我拥有超过3-4个Lib Project,并且其中至少有2个需要“ android-support” lib,会发生什么?我面临着同样的问题。
DearDhruv 2014年

Doenst为我工作。这只会使事情变得更糟。现在我所有的项目都被临时毁坏了:(
Martin Pfeffer 2014年

只是要添加,对于Windows,如果发生错误,则表明当前正在使用位于以下位置的android支持库文件夹:C:\ <android sdk位置> \ extras \ android \ support \ <支持版本文件夹> \,并且怀疑反病毒有故障。您还将认为Eclipse正在使用该文件夹,但它不应基于提供的答案。我所做的只是关闭文件夹。当SDK Manager安装下载支持库时,会发生这种情况。
霓虹灯Warge

54

不要在库中包含android-support-v4,而是可以使用构建路径菜单>添加外部jar将其作为外部jar添加到项目中

有时您必须清理您的项目。


1
通过添加一个开源库作为外部jar,我能够解决此问题。谢谢。
SKK


7

Actionbarsherlock中具有支持库。如果支持库也位于您的主项目中,则可能会导致冲突。

去掉 android-support-v4.jar从项目的libs目录中。

同时删除 android-support-v4.jar从第二个库中,然后重试。

Jar不匹配在依赖项列表中找到2个版本的android-support-v4.jar


我已经尝试过您的解决方案。我也提到了它。但是,感谢您的答复。
SKK 2013年

@Santhosh对我有用。我没有任何理由不起作用。可能您的C驱动器是安全的,这就是您无法删除它的原因。将SDK移至另一个文件夹并尝试一下。检查文件夹权限并同时检查管理员权限
Raghunandan

我创建了一个新的工作区,但它不安全。我拥有管理员权限。而且我能够删除它,但问题仍然存在。它仍然说JAR不匹配,如果我从任何库中删除支持jar,它都无法解决类型错误。
SKK 2013年

从项目中删除jar。请参考图书馆项目ABS。检查资源是否有任何错误。清理并构建。这应该工作。stackoverflow.com/questions/16003396/…–
Raghunandan

你说过它对你有用。您是否按照步骤重现了我提到的问题,或者您提到的其他项目中添加了库?
SKK 2013年


4
  1. 当您在应用程序中使用库项目时,Jar不匹配出现,并且两个项目都使用具有不同版本的同一jar,因此只需检查应用程序中附加的所有库项目。如果存在某些不匹配,则将其删除。

  2. 如果以上过程不起作用,则从构建路径中删除项目依赖项,然后再次添加库项目并构建应用程序。


1

我认为您创建了一个新的工作区,并使用他的lib正确导入了所有项目,并android-support-v4.jar在sdk额外文件的adb捆绑包中添加了外部jar 。我认为它对您有用。希望一切顺利

并且还可以使用android支持库,它可能会帮助您并更新您的adt包


1

我相信您在库和应用程序中都需要支持包。但是,要解决此问题,请确保两个位置的文件相同(校验和相同)。

只需从一个位置复制支持包文件,然后在另一个位置复制,然后清理并刷新您的库/项目,就可以了。


按照建议,我从ABS的libs文件夹中复制了支持jar,并将其粘贴到DVP和项目的libs文件夹中。重新开始蚀,清洗,再次建造。现在DVP和MyApp中有错误。“ MyApp中的容器'Android Dependencies'引用了不存在的库'C:\ Users \ ksanthoshkumar \ My_Workspace \ DVP_library \ bin \ dvp_library.jar'。” 和“无法解决在DVP中键入错误以及更多错误”
SKK

您是否为库和应用程序项目使用了正确的SDK版本。请检查一下。
waqaslam 2013年

是的,这三个版本(项目和两个库ABS和DVP)的SDK版本4.2
SKK 2013年

@Santhosh我猜您的minsdkVersion应该是10
Raghunandan 2013年

最低SDK为8。建议使用最新版本作为targetSDK。看到我的问题中的编辑。
SKK 2013年

0

在我的情况下,工作空间中还有另一个目录,该目录与我项目中的jar文件相同。我没有创建该目录或其中的任何内容。我相信它是由Eclipse创建的。我刚刚删除了该目录,它运行正常。


-1

右键单击您的项目-> Android工具->添加支持库

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.