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

时间:2013-11-20 08:49:41

标签: java eclipse spring hibernate maven

在使用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个方法不是有效。

我阅读了thisthis,但我没有使用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>  

7 个答案:

答案 0 :(得分:15)

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

  1. 删除文件夹D:/mypath/.m2/repository/javax/transaction/jta
  2. 使用-U运行Maven,以便再次尝试破解下载。
  3. 那应该尝试再次下载文件并清理任何&#34;残留物#34;在您的本地存储库中。

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

    1. 刷新项目( F5 或从上下文菜单中)
    2. 清理项目
    3. 尝试打开JAR文件。也许它真的很腐败。
    4. 如果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

maven central results

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

答案 5 :(得分:0)

简单地解决这个问题。

  1. 选择相关项目的“Maven Dependencies”中的所有库。
  2. 只需“刷新”鼠标右键......
  3. 原因是缓存信息,所以只需刷新信息。

答案 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