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再次下载文件:
- 删除文件夹
D:/mypath/.m2/repository/javax/transaction/jta
- 使用
-U
运行Maven,以便再次尝试破坏下载。
那应该尝试再次下载文件并清理本地存储库中的任何“残留”。
如果Eclipse仍然抱怨JAR文件已损坏:
- 刷新项目( F5或从上下文菜单中)
- 清理项目
- 尝试打开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 。
您正在使用Spring 3.2,所以我建议您只需将hibernate升级到最新版本(4.2.6.Final),该版本应该引用jta 1.1。 或者只是在你的pom中包含1.1版本,它在maven中心有一个jar。
简单地解决这个问题。
- 选择相关项目的“Maven Dependencies”中的所有库。
- 只需“刷新”鼠标右键……
原因是缓存信息,所以只需刷新信息。
试过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