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

80

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

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

我想知道的是,为什么我的IDE显示Java Build Problems,读取“需要存档文件库 library/path/somejar.jar 无法读取或不是有效的zip文件”,而我可以在.m2存储库中看到这些jars呢?

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

我附上了一个截图以说明。

Markers


你需要执行maven的install目标: 在m2e的上下文菜单中查找。这将获取所有丢失的依赖项。 - dma_k
2
谢谢dma_k,我已经尝试过了,但是没有成功。这个jar包在我的.m2仓库中,我不知道为什么它没有被读取到。 - totalcruise
如果有jar文件,请尝试刷新您的项目。通常这样做会有帮助。 - dma_k
好的,那有帮助了 - 现在还有其他错误 - 但这有帮助。谢谢 - totalcruise
24个回答

95

实际上,IDE通常会缓存本地仓库(Eclipse也有类似的操作,我需要重新启动Eclipse)。

你可能会遇到一些不好的Maven行为,如果你在安装依赖前声明了它,Maven会创建一个空版本的缺失依赖项(带有元数据但没有jar文件),你将不得不手动清理你的.m2仓库。

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


14
在将现有项目添加到新的Git仓库后,简单地重新启动Eclipse对我很有帮助。谢谢 +1 - pjco
9
似乎Helios存在一个已知的Bug(不确定Juno是否也有)。https://bugs.eclipse.org/bugs/show_bug.cgi?id=375249。当JAR包有效时,仅删除项目(而不是内容),然后将现有项目重新导入工作区可能会修复它。 - dfdumaresq
3
重新启动 Eclipse 对我无效,但删除/导入操作有效。 - Alex
11
手动清理目录对我来说似乎有效。只需执行rm -rf ~/.m2/repository/<依赖路径>(适用于Linux/Mac),这似乎就是所需的全部内容。 - Paul Richter

18

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


在Ubuntu上,执行mvn -install命令时提示无效命令。我刚刚删除了.m2\repository目录下的所有文件,并通过IDE(STS)中的alt+f5更新了Maven项目,勾选了“Force update of snapshots/releases”,然后点击OK...问题解决了..谢谢 :) - Vaibhav Miniyar

9

我使用Eclipse作为集成开发环境时,遇到了同样的错误。我必须执行项目->Maven->更新项目。选中下面除了“离线”之外的所有复选框,特别是“强制更新快照/发布”的那一个,然后点击确定。再次对该项目进行清理构建。


6

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


我认为是ALT + F5。 - Bala

6

这对我有用。

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

3
以下步骤解决了我的问题:
  1. 进入./m2/repository文件夹。

  2. 进入相应的存档错误文件夹。

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

  4. 删除错误名称文件夹。

  5. 现在转到Eclipse项目 - 右键单击 - Maven - > 更新项目。

上述技巧对我有效。

2

对于谷歌员工:

在我的情况下,我在探索Eclipse时不小心手动将Java类添加到了构建路径。通过查看“配置构建路径...>库”,我删除了罪魁祸首类,现在只剩下

  • JRE系统库
  • Maven依赖项

没有任何抱怨。


我曾经遇到过类似的问题,将application.properties添加到源文件夹中导致它被添加为eclipse Oxygen中的应用程序库。这会产生错误:“项目所需库的存档:'src/main/resources/application.properties'无法读取或不是有效的ZIP文件”,从构建路径中删除该依赖项可以解决此问题。 - J E Carter II

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

1
在我的情况下,我尝试了所有建议的提示,但错误仍然存在。我解决了这个问题,通过使用一个更新的版本并将其写入pom.xml文件中。此后一切都正常了。

1
我曾经遇到了和我的项目有关的同样问题。
我的项目无法找到这个存档:-
C:\Users\rakeshnarang\.m2\repository\org\hibernate\hibernate-core\5.3.7.Final

我进入了这个目录并删除了这个文件夹。 回到Eclipse,按下ALT + F5以更新项目。 jar文件被重新下载,问题得到解决。 你应该尝试一下。

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