在使用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">
当我从this url手动下载jta-1.0.1B.jar时,pom.xml中的错误消失但被.java类文件中的新错误替换,表明Document类的5个方法不是有效。
我阅读了this和this,但我没有使用struts,我已经包含了3.3.2.ga的hibernate,而且我在pom.xml中没有存储库标记(其中this说甚至没有解决问题),所以我不认为这是重复的。
有人可以建议一种方法来解决这个问题吗?如果我需要一个存储库标签,我该把它放在哪里?还有什么可以改变以适应它的添加?
对于任何好奇的人,我的pom.xml包括在内如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<description></description>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.1</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.3.2.GA</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>20030825.184428</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3</version>
</dependency>
<!-- dependency to fix JSPServletException -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jsp-api</artifactId>
<version>6.0.32</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<org.springframework.version>3.2.4.RELEASE</org.springframework.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<groupId>DocumentManager</groupId>
<artifactId>DocumentManager</artifactId>
</project>
答案 0 :(得分:15)
要解决此类问题,请让Maven再次下载文件:
D:/mypath/.m2/repository/javax/transaction/jta
-U
运行Maven,以便再次尝试破解下载。那应该尝试再次下载文件并清理任何&#34;残留物#34;在您的本地存储库中。
如果Eclipse仍然抱怨JAR文件已损坏:
如果JAR文件已损坏,请再次删除该文件夹并再次运行Maven。请注意Maven用于下载存档的URL,并与该网站的管理员联系。
答案 1 :(得分:2)
您可以手动转到错误控制台中指定的存储库
那是
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-&gt; maven-install。 它将下载正确的jar文件。
答案 2 :(得分:1)
你应该在你的hibernate依赖项中排除JTA。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.3.ga</version>
<exclusions>
<exclusion>
<artifactId>javax.transaction</artifactId>
<groupId>jta</groupId>
</exclusion>
</exclusions>
</dependency>
之后,添加jta依赖项。
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
答案 3 :(得分:1)
通过转到Build Path-> Configure Build Path-> Libraries-> Remove the jta lib
上有一个小十字标记来解决我的问题。
我能够成功构建我的项目,但即使在项目Refresh / Project Clean之后也会出现此错误。
答案 4 :(得分:0)
maven中央存储库不包含给定groupId / artifactId的jar文件,只包含 pom.xml 。
您正在使用Spring 3.2,所以我建议您只需将hibernate升级到最新版本(4.2.6.Final),该版本应该引用jta 1.1。或者只是在您的pom中包含1.1版本,它在maven中心有一个jar。
答案 5 :(得分:0)
简单地解决这个问题。
原因是缓存信息,所以只需刷新信息。
答案 6 :(得分:0)
尝试使用1.5.5发布jar并且它适用于我
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.5.RELEASE</version>
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/1.5.5.RELEASE