无法读取所需库的存档或不是有效的 ZIP 文件
Posted
技术标签:
【中文标题】无法读取所需库的存档或不是有效的 ZIP 文件【英文标题】:archive for required library could not be read or is not a valid ZIP file 【发布时间】:2013-10-31 19:22:55 【问题描述】:在解决这个问题之前,让我解释一下我做了什么让我陷入了这个问题。
-
我在 github 上创建了一个帐户,并创建了一个名为 android 的存储库。
然后我在 Windows 7 中安装了github client。
然后我打开这个客户端,提供我的身份验证并将存储库克隆到本地目录
C:\Users\Aniket\Documents\GitHub\Android
(该文件夹中有.git
文件夹)。
然后我去了我的 Eclipse ADT 并按照here 的描述安装了 EGit 插件。我也是
然后在 Eclipse 中右键单击我的项目TicTacToe
转到Team->Share Project
并提供我的存储库路径,即C:\Users\Aniket\Documents\GitHub\Android
。
我的项目已添加到本地存储库,并且在我的 github 客户端中,它显示了在 github 站点上的实际存储库中提交文件的所有选项。
但我的项目突然显示错误,带有红色“!”在上面签名。
描述 --> 所需库的存档:'C:/Users/Aniket/AndroidWorkspace/TicTacToe 无法读取项目“井字游戏”中的 /libs/android-support-v4.jar' 或不是有效的 ZIP 文件
资源 --> 井字游戏
路径位置 --> 构建路径
类型 --> 构建路径问题
注意:错误是在 Eclipse 的错误控制台中显示的单行。我只是为了便于阅读而将其拆分。
即使在分离存储库后,它也会显示该错误。
以前有没有人遇到过这种情况。解决方案或解决方法是什么?我用谷歌搜索,前几个链接表明这是一个 Eclipse 错误。请建议如何使我的项目恢复可执行状态?
【问题讨论】:
就我而言,问题是库没有适当的权限,Eclipse 无法读取它。 【参考方案1】:这是一个 Eclipse 错误。我曾多次遇到类似的问题。关闭和重新打开项目有时会起作用。如果它不起作用,请尝试重新启动 Eclipse。
【讨论】:
是的,我对其进行了一些研究,是的,它是一个 Eclipse 错误。重新启动 Eclipse 对我有用。发送! @AniketThakur,请提供一两个链接。 @Basilevs 首先看看bugs.eclipse.org/bugs/show_bug.cgi?id=375249 可以确认这一点 - 进行了清理并构建并且它有效 关闭项目,重新打开,清理所有项目,它成功了!【参考方案2】:我也遇到过同样的问题。我删除了那个 jar 文件,然后右键单击该项目,选择 Maven,然后执行“更新项目...”。再次下载jar,问题就解决了。
【讨论】:
经过多次尝试,找到了一个有效的答案。谢谢! 它对我有帮助,我刚刚删除了这个 jar,然后我看到下载了另一个大小的新文件......很奇怪...... 我删除了 jar 文件夹本身。然后,尝试了这个答案,它奏效了。【参考方案3】:还有其他情况会显示错误Archive for required library
项目右键打开-->项目项目属性-->java构建路径-->Android私有库
如果有两个同名的 jar 文件,则从库中删除一个。
jar 文件可能会隐藏一些时间 在窗口中打开你的 libs 文件夹并检查是否存在任何隐藏文件 组织 --> 文件夹和搜索选项 --> 查看 --> 勾选显示隐藏文件 和删除隐藏的jar文件,相同的cass如果src和packages中存在隐藏的java文件则删除如果有
【讨论】:
这是我的问题的原因。我之前使用的 mac 已经为项目中的每个文件创建了隐藏文件。谢谢。 这为我指出了类似问题的正确方向。谢谢!【参考方案4】:看来每个人都有不同的故事要讲!对我来说,我必须从 eclipse Markers 选项卡中删除错误,然后再次清理项目。在此之前,我按照@rachit 的建议关闭并重新打开了几次项目/eclipse,这对我不起作用。
【讨论】:
谢谢!这也是唯一对我有用的解决方案。还尝试清理,重新打开eclipse并再次下载jar,但没有任何效果。 非常感谢。这也是唯一对我有用的解决方案。我在解决这个问题上浪费了太多时间。你知道为什么会这样吗? 对我来说也一样。嗯有错误信息?只需删除它,它就会解决:) LOL 谢谢!在尝试了其他几个选项之后,这个终于对我有用了。【参考方案5】:就我而言,我是从网上下载项目,解压项目后有些文件被屏蔽了,只需解开文件并重试,问题就解决了。
【讨论】:
【参考方案6】:就我而言,我尝试了所有建议的提示,但错误仍然存在。我用更新的版本解决了更改版本并将其写在 pom.xml 中。之后一切正常。
【讨论】:
【参考方案7】:在我的情况下,重新启动 Eclipse 并没有解决问题。我重新启动计算机并在eclipse中做了Project -> Clean
【讨论】:
【参考方案8】:对我有用的解决方案:
转到*.classpath
并删除该行:
<classpathentry kind="lib" path="the_problematic_class.java"/>
【讨论】:
【参考方案9】:也可能是由于损坏的 jar 文件。最好先检查一下,因为这就是我的原因:
jar tf myjar.jar
应该列出里面的内容。
【讨论】:
【参考方案10】:我在 Eclipse Mars 中遇到了同样的问题。我从 [https://oss.jfrog.org/webapp/#/artifacts/browse/tree/General/repo/org/ethereum/ethereumj-core/1.0.0-SNAPSHOT][1] 并在目录中替换它。
在 C:\UsersmachineName.m2\repository\org\ethereum\ethereumj-core\1.0.0-SNAPSHOT\ethereum-core-1.0.0- 使用 pom.xml 添加 ethereum.jar 时出错SNAPSHOT.jar,我在这里添加了下载的jar(ethereum-core-1.0.0-SNAPSHOT.jar),问题解决了。
【讨论】:
【参考方案11】:我会说,有些答案可能适用于某些情况,但对我来说,有必要加倍努力。因此,我将尝试对可以做的事情做一个总结:
确认罐子完好无损:
jar tf myjar.jar
通过右键单击项目 -> Maven -> 更新项目重新启动 eclipse 和更新项目设置
对我有用的选项是在工作区文件夹中导航,然后删除文件:
.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
之后重启eclipse并重建项目。
【讨论】:
【参考方案12】:我在任何地方都没有发现重复项,并尝试重新启动 Eclipse,重建项目。我只有一个库出错。所以我只是尝试将jar文件从ksoap2-android-assembly-2.5.8-jar-with-dependencies.jar
重命名为ksoap2-2.5.8.jar
所以如果上面的问题都没有解决,你也可以试试这个
【讨论】:
【参考方案13】:就我而言,java 安装不正确。所以,我卸载了 Java 并重新安装了一个新版本。现在,它可以工作了。
【讨论】:
【参考方案14】:对我们来说,问题似乎在于 .jar 文件的大小。我建议做以下测试,看看是否是这种情况,或者至少排除它。首先查看 Eclipse 项目中的其他 jar,并将它们与有问题的 jar 进行比较。它比其他的大很多吗?如果是这样,请尝试以下解决方法。否则,这个答案可能对你没有帮助。在开始之前,使用以下命令行命令配置 Windows 以将 .jar 文件视为 .zip 文件:
assoc .jar=CompressedFolder
(见https://superuser.com/questions/121540/can-you-configure-windows-to-open-jar-files-like-zip-files-without-a-3rd-party-t)
可选:一个简单的测试
在尝试解决方法之前,请先测试一下是否确实是 jar 文件大小让您感到困惑。
-
创建一个大的 .jar,其中包含不在有问题的 jar 中的随机 .class 文件。为此,您可以创建一个充满文件的文件夹,对其进行压缩,然后将 .zip 扩展名重命名为 .jar。 Windows 可能会警告您更改扩展名。忽略这个。确保文件夹中有足够的文件,使其比有问题的 jar 大一点。
尝试导入这个人为创建的 jar。如果它失败并出现相同的错误,则可能是大小问题。
解决方法
如果问题确实是尺寸问题,您可能已经通过上述可选的简单测试确定了问题,您可以尝试以下解决方法。
-
解压缩您的 .jar 文件。您应该可以在 Windows 中轻松完成此操作
将您从第 1 步获得的文件夹拆分为较小的子文件夹。它可能只有两个文件夹或更多,具体取决于原始文件的大小。您希望文件夹比您现有的一些“好”罐子小,这样大小就不会成为问题。确保在执行此操作时保持包结构完整。
压缩您在第 2 步中创建的所有文件夹,并将 .zip 重命名为 .jar。
分别导入第 3 步中的所有 .jar。
这些步骤可能有点不清楚,所以这里是一个示例。想象一下,您的 jar 文件名为 mylib.jar。您将其解压缩到名为 mylib 的文件夹中。在里面,假设有三个子文件夹,分别称为 package1、package2 和 package3。创建3个文件夹mylib1、mylib2、mylib3,分别放入package1、package2、package3。然后压缩这些文件并将扩展名重命名为 .jar。然后您将导入 mylib1.jar、mylib2.jar 和 mylib3.jar。
【讨论】:
【参考方案15】:对于 Java Web 应用程序,web.xml 作为 jar 添加到项目中。在项目资源管理器中,尝试在 jar 图标中找到 web.xml 并从项目中删除。错误会消失!!
【讨论】:
【参考方案16】:尽管在网上寻找解决方案,但我还是被这个问题困扰了好几天。我首先将我的项目移至 Netbeans 并且一切正常。然后我返回到 eclipse->properties->java compile-> Building 并将“Incompartible build path”选项从错误更改为警告,然后进行了 maven 更新并且它工作了。
【讨论】:
【参考方案17】:我意识到这是一个老问题,但如果这些都不适用于遇到此线程的其他人,我还有另一个解决方案。 我遇到了同样的问题,花了很多时间试图弄清楚,却发现我的 Eclipse 类路径/构建路径中有一个 .json 文件,它不喜欢这样,所以它不会编译。 因此,请检查以确保您的构建路径中没有文本文件或 json 文件等。
【讨论】:
【参考方案18】:我不小心把 web.xml 放到了构建路径中:x
【讨论】:
以上是关于无法读取所需库的存档或不是有效的 ZIP 文件的主要内容,如果未能解决你的问题,请参考以下文章
simplecaptcha-1.2.1.jar无法读取或不是有效的ZIP文件
错误:访问限制:“数据源”类型不是 API(对所需库的限制 ..\rt.jar)[重复]