eclipse maven错误:项目中所需库的存档无法读取或不是有效的ZIP文件

在使用spring web mvc的eclipse maven项目中,我在Markers选项卡中收到以下错误:

Archive for required library: 'D:/mypath/.m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar' in project 'DocumentManager' cannot be read or is not a valid ZIP file 

我已经检查过,并且jar文件实际上存在于指示的URL中。 我甚至复制了jar的备份来覆盖该位置的jar文件,但这也没有消除错误。 我强迫maven更新,但没有解决问题。 我也重启了eclipse没效果。

有一次,jta-1.0.1B.jar已经是jta-1.0.1B.jar.LatestUpdate,所以我把名字缩短为jta-1.0.1B.jar

在pom.xml中,错误消息的位置是第2行,其内容如下:

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

当我从这个url手动下载jta-1.0.1B.jar时,pom.xml中的错误消失但被.java类文件中的新错误替换,表明Document类的5个方法无效。

我读过这个和这个 ,但是我没有使用struts,我已经包含了3.3.2.ga的hibernate,而且我在pom.xml中没有一个知识库标签( 这说的话甚至都没有解决问题),所以我不认为这是重复的。

谁能建议一种方法来解决这个问题? 如果我需要一个存储库标签,我该把它放在哪里? 还有什么可以改变以适应它的添加?

对于任何好奇的人,我的pom.xml包含在内,以供参考,如下所示:

  4.0.0 war 0.0.1-SNAPSHOT     maven-compiler-plugin  1.5 1.5    maven-war-plugin 2.0.1      javax.servlet servlet-api 2.5   org.springframework spring-beans ${org.springframework.version}   org.springframework spring-jdbc ${org.springframework.version}   org.springframework spring-web ${org.springframework.version}   org.springframework spring-webmvc ${org.springframework.version}   org.springframework spring-orm ${org.springframework.version}   taglibs standard 1.1.2   javax.servlet jstl 1.1.2   org.hibernate hibernate-entitymanager 3.3.2.GA   mysql mysql-connector-java 5.1.10   commons-dbcp commons-dbcp 20030825.184428   commons-pool commons-pool 1.5.4   commons-fileupload commons-fileupload 1.2.1   commons-io commons-io 1.3    org.apache.tomcat jsp-api 6.0.32 provided    3.2.4.RELEASE UTF-8  DocumentManager DocumentManager  

要解决这类问题,让Maven再次下载文件:

  1. 删除文件夹D:/mypath/.m2/repository/javax/transaction/jta
  2. 使用-U运行Maven,以便再次尝试破坏下载。

那应该尝试再次下载文件并清理本地存储库中的任何“残留”。

如果Eclipse仍然抱怨JAR文件已损坏:

  1. 刷新项目( F5或从上下文菜单中)
  2. 清理项目
  3. 尝试打开JAR文件。 也许这真的很腐败。

如果JAR文件已损坏,请再次删除该文件夹并再次运行Maven。 请注意Maven用于下载存档的URL,并与该网站的管理员联系。

您应该在hibernate依赖项中排除JTA。

  org.hibernate hibernate 3.2.3.ga   javax.transaction jta    

之后,添加jta依赖项。

  javax.transaction jta 1.1  

我的问题是通过转到Build Path-> Configure Build Path-> Libraries-> Remove the jta lib ,它上面有一个小的十字标记。

我能够成功构建我的项目,但即使在项目Refresh / Project Clean之后也出现了此错误。

您可以手动转到错误控制台中指定的存储库,该存储库是Archive for required library: '**D:/mypath/.m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar**' in project 'DocumentManager' cannot be read or is not a valid ZIP file

删除提到的JAR

转到eclipse,右键单击该项目并选择run as-> maven-install。 它将下载正确的jar文件。

maven中央存储库不包含给定groupId / artifactId的jar文件,只包含pom.xml

maven中心结果

您正在使用Spring 3.2,所以我建议您只需将hibernate升级到最新版本(4.2.6.Final),该版本应该引用jta 1.1。 或者只是在你的pom中包含1.1版本,它在maven中心有一个jar。

简单地解决这个问题。

  1. 选择相关项目的“Maven Dependencies”中的所有库。
  2. 只需“刷新”鼠标右键……

原因是缓存信息,所以只需刷新信息。

试过1.5.5发布jar,它对我有用

 org.springframework.boot spring-boot-starter-parent 1.5.5.RELEASE 

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/1.5.5.RELEASE