编译器错误“无法读取所需库的存档” - Spring Tool Suite

Posted

技术标签:

【中文标题】编译器错误“无法读取所需库的存档” - Spring Tool Suite【英文标题】:Compiler error "archive for required library could not be read" - Spring Tool Suite 【发布时间】:2012-02-10 02:15:31 【问题描述】:

我开始配置我的开发环境,我正在使用 Spring Tool Suite 2.8.1 和 m2E 1.01。

据我所知,由于这是一个 Maven 项目(我的第一个项目),我的 Maven POM 决定(连同 m2E 智能)我的项目构建配置和依赖项。

我想知道的是为什么我的 IDE 显示 Java 构建问题“无法读取库 library/path/somejar.jar 所需的存档或不是有效的 zip 文件”什么时候可以在我的 .m2 存储库中看到这些 jar?

所有错误都与我在 parent-pom.xml 中排除的 commons-logging:1.1.1 相关。这是通过 spring-context-support:3.0.5 实现的传递依赖。我从构建中排除了该库,现在错误与 spring-context-support 库有关。

我附上了一张截图来说明。

【问题讨论】:

你需要为 maven 执行 install 目标:寻找 m2e 的上下文菜单。这将获取所有丢失的依赖项。 感谢 dma_k,我已经尝试过了,但无济于事。 jar 在我的 .m2 存储库中..我只是不知道为什么它没有被读取... 如果有 jar 文件,请尝试刷新您的项目。通常这会有所帮助。 好的,这有帮助 - 现在还有其他错误 - 但这有帮助。谢谢 【参考方案1】:

确实,IDE 经常缓存本地存储库(Eclipse 做类似的事情,我必须重新启动 Eclipse)。

您可能会遇到一个丑陋的 maven 行为,如果您在实际安装之前声明了一个依赖项,maven 将创建一个缺少的依赖项的空版本(包含元数据但没有 jar 的文件夹),您将不得不手动清理您的.m2 存储库。

第三,已安装的存档(jar...)可能会损坏,因此请尝试使用任何存档工具(7zip...)打开它进行测试,如果存档损坏,请删除整个文件夹。

【讨论】:

在将现有项目添加到新的 Git 存储库后,只需重新启动 Eclipse 即可为我工作。谢谢+1 似乎是 Helios 的一个已知错误(不确定 Juno 是否存在)。 bugs.eclipse.org/bugs/show_bug.cgi?id=375249。当 jar 有效时,只需删除项目(而不是内容)并将现有项目导入工作区即可修复它。 Eclipse 重新启动对我不起作用,删除/导入确实有效 手动清理目录似乎对我有用。只需rm -rf ~/.m2/repository/<path of dependency> (linux/mac) 似乎就足够了。【参考方案2】:

在我的情况下,我必须手动删除 .m2\repository 文件夹中的所有文件,然后打开命令提示符并在我的项目目录中运行 mvn -install 命令。

【讨论】:

在 ubuntu mvn -install 上说这不是一个有效的命令我刚刚删除了 .m2\repository 中的所有文件并通过 alt+f5 从 IDE (STS) 更新了 maven 项目,然后检查“强制更新快照/releases”然后OK...解决了我的问题..THANKS :)【参考方案3】:

就我而言,我尝试了所有建议的提示,但错误仍然存​​在。我解决了使用更新版本进行更改并将其写入 pom.xml 的问题。之后一切正常。

【讨论】:

【参考方案4】:

我在使用 Eclipse 作为 IDE 时遇到了同样的错误。我必须做项目-> Maven-> 更新项目。选择下面的所有复选框,除了“离线”特别是。一个“强制更新快照/版本”,然后单击“确定”。是否再次为项目进行了干净构建。

【讨论】:

【参考方案5】:

对于 Google 员工:

在我的例子中,我在浏览 Eclipse 时不小心手动将 Java 类添加到构建路径。通过查看“配置构建路径...> 库”,我删除了罪魁祸首类,现在只有

JRE 系统库 Maven 依赖项

没有什么可抱怨的。

【讨论】:

我遇到了与此类似的问题,将 application.properties 添加到源文件夹导致它被添加为 eclipse Oxygen 中的应用程序库。它正在为所需库生成错误存档:无法读取项目中的“src/main/resources/application.properties”或不是有效的 ZIP,并且从构建路径中删除该依赖项解决了该问题。【参考方案6】:

这可能是因为您已将 spring-licence.txt 文件添加到您的网络应用程序库中。

我有类似的问题并在删除该文本文件后解决。在库中,它只需要 jar 文件。

【讨论】:

【参考方案7】:

我删除了本地 Maven 存储库。 然后只需右键单击项目 -> Maven -> 更新项目... 选择所有相关项目,然后单击“确定”。

【讨论】:

【参考方案8】:

从构建路径中删除 maven 依赖项

【讨论】:

【参考方案9】:

从本地 .m2 存储库和 Eclipse/STS 中的 Ctrl+F5(更新 Maven 项目)中删除损坏的文件。它会下载并安装这些文件。

【讨论】:

我认为是 ALT + F5【参考方案10】:

我遇到了这个问题。我有“所需库 spring-boot-devtools 的存档无法读取或不是有效的 ZIP 文件”,解决方案是这样的:- 1-确定有问题的依赖名称(可能是spring-boot-devtools)。 2-关闭日食。 3- 在您的 .m2 文件中搜索这些依赖项(按名称)。 4-删除这些文件夹。 5-重新打开eclipse,让maven再次重建你的依赖。

【讨论】:

【参考方案11】:

好的,我在 Mac 上遇到了与 STS 相同的问题,并通过删除存储库文件夹中的所有文件并从 STS IDE 单击项目然后单击 Maven -> 更新项目来解决它。给它几分钟下载所有依赖项,问题就解决了。

【讨论】:

【参考方案12】:

我面临同样的问题。我删除了本地存储库并重新启动了 ID。效果很好。

【讨论】:

【参考方案13】:

刚刚在 Indigo SR2 上遇到了这个问题。在我从类路径(构建路径)中删除了一个多余的 jar 后,它弹出了。重新启动 Eclipse 没有帮助。将 jar 添加回构建路径...错误消失了。再次取下罐子,这一次我没有受到另一次投诉。

【讨论】:

【参考方案14】:

以上解决方案都没有解决我的问题。我已经通过删除 projectworkspace/.metadata 文件夹和 location/.m2 文件夹中的所有文件解决了这个问题,然后让 eclipse 再次下载每一个东西。希望这对某人有帮助,干杯!

【讨论】:

【参考方案15】:

这对我有用。

    关闭 Eclipse 删除./m2/repository 打开Eclipse,会自动下载所有的jars 如果问题仍然存在,请右键单击项目 > Maven > 更新项目... > 选中“强制更新快照/发布”

【讨论】:

【参考方案16】:

当我收到“无法读取所需库的存档”的错误消息时,我通过从项目的构建路径中删除有问题的 JARS 来解决它,然后使用“添加外部 jars”将它们重新添加到再次(导航到他们所在的同一文件夹)。使用“添加罐子”按钮不起作用,错误仍然存​​在。但是使用“添加外部罐子”有效。

【讨论】:

【参考方案17】:

以下步骤解决了我的问题。

    转到 ./m2/repository 文件夹。

    转到相应的存档错误文件夹。

    验证是否存在任何 zip 文件。

    删除错误名称文件夹。

    现在来到 Eclipse 项目 - 右键单击​​ - Maven -> 更新项目。

以上技巧对我有用。

【讨论】:

【参考方案18】:

我的项目也面临同样的问题。

我的项目找不到这个存档:-

C:\Users\rakeshnarang\.m2\repository\org\hibernate\hibernate-core\5.3.7.Final

我去了这个目录并删除了这个文件夹。

回到 Eclipse 并按 ALT + F5 来更新项目。

再次下载jar文件,问题解决。

你应该试试这个。

【讨论】:

【参考方案19】:

另外,以下命令也适用于我:

mvn -s settings.xml eclipse:clean
mvn -s settings.xml eclipse:eclipse

【讨论】:

【参考方案20】:

如果是 VSCode,请按照以下步骤操作:

    导航到包含损坏 jar 的相应文件夹 只删除 jar mvn clean mvn 编译

这对我有用。

【讨论】:

【参考方案21】:

阅读问题部分中的问题,确定哪个依赖项无法读取,然后转到 maven 存储库 .m2\repository -> 1)检查依赖关系并将其从文件夹中删除 2) 进入STS/Eclipse -> 点击maven -> update project -> 选择强制更新snapshots/releases,点击ok。

或 从 .m2/repository 中删除依赖项并重建 maven --> 更新 maven 项目

【讨论】:

【参考方案22】:

当 Eclipse 搞砸时会发生这种情况。要修复它,请删除以下所有文件:

workspace/.metadata/.plugins/org.eclipse.jdt.core

【讨论】:

【参考方案23】:
Delete your C:\Users\PC\.m2** folder
and update maven project 

【讨论】:

以上是关于编译器错误“无法读取所需库的存档” - Spring Tool Suite的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试在我的 sprin 启动应用程序中应用 auth0 安全性,但它会引发错误

Sprin Boot无RunWith注解解决办法

编写spring boot程序时出现异常

cas完全是sprin框架写的么

Sprin学习一

sprin boot 配置文件的获取顺序