web-dev-qa-db-fra.com

erreur maven eclipse: l'archive de la bibliothèque requise dans le projet ne peut pas être lue ou n'est pas un fichier Zip valide

Dans un projet Eclipse maven utilisant spring web mvc, l'erreur suivante s'affiche dans l'onglet Marqueurs: 

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

J'ai vérifié, et le fichier jar est en fait présent dans l'URL indiquée. J'ai même copié une sauvegarde du fichier jar pour écraser le fichier jar à cet emplacement, mais cela ne permet pas d'éliminer l'erreur non plus. J'ai forcé Maven à mettre à jour, ce qui n'a pas résolu le problème. J'ai également redémarré Eclipse sans aucun effet.

À un moment donné, jta-1.0.1B.jar était jta-1.0.1B.jar.LatestUpdate, j'ai donc abrégé le nom en jta-1.0.1B.jar 

Dans pom.xml, l'emplacement du message d'erreur est la ligne 2, qui se lit comme suit: 

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

Lorsque je télécharge jta-1.0.1B.jar manuellement à partir de this url , l'erreur contenue dans pom.xml disparaît mais est remplacée par de nouvelles erreurs dans les fichiers de classe .Java indiquant que 5 méthodes de la classe Document ne sont pas valides. 

J'ai lu ceci et ceci , mais je n'utilise pas struts, j'inclus déjà 3.3.2.ga d'hibernate et je n'ai pas de balise de référentiel dans pom.xml (qui this dit n’a même pas résolu le problème de toute façon), donc je ne pense pas que ce soit un doublon. 

Quelqu'un peut-il suggérer un moyen de résoudre ce problème? Si j'ai besoin d'une balise de référentiel, où puis-je la mettre? Et quoi d'autre puis-je changer pour s'adapter à son ajout?

Pour ceux qui sont curieux, mon fichier pom.xml est inclus à titre de référence comme suit: 

<?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>  
9
CodeMed

Pour résoudre de tels problèmes, laissez Maven télécharger à nouveau les fichiers:

  1. Supprimer le dossier D:/mypath/.m2/repository/javax/transaction/jta
  2. Exécutez Maven avec -U pour qu'il tente à nouveau les téléchargements interrompus.

Cela devrait essayer de télécharger le fichier à nouveau et nettoyer tout "résidu" dans votre référentiel local.

Si Eclipse se plaint toujours que le fichier JAR est corrompu:

  1. Rafraîchissez votre projet (F5 ou du menu contextuel)
  2. Nettoyer le projet
  3. Essayez d'ouvrir le fichier JAR. Peut-être que c'est vraiment corrompu.

Si le fichier JAR est corrompu, supprimez le dossier à nouveau et exécutez Maven à nouveau. Notez les URL utilisées par Maven pour télécharger l'archive et contactez l'administrateur de ce site.

15
Aaron Digulla

Vous pouvez accéder manuellement au référentiel spécifié dans la console d’erreur , C’est-à-dire 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.

Supprimer le JAR mentionné

Allez sur Eclipse, cliquez avec le bouton droit de la souris sur le projet et sélectionnez Exécuter en tant que-> maven-install. Il téléchargera le fichier JAR de droite. 

2
Sachindeep Singh

Le problème avec moi a été corrigé en allant à Build Path-> Configure Build Path-> Libraries-> Remove the jta lib qui porte une petite croix.

J'ai réussi à construire mon projet mais cette erreur s'est produite même après le projet Refresh/Project Clean.

1
Amit Kumar

Vous devez exclure JTA dans votre dépendance Hibernate.

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

Après cela, ajoutez la dépendance jta.

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>jta</artifactId>
    <version>1.1</version>
</dependency>
1
user3638990

Essayé avec 1.5.5 Release jar et cela a fonctionné pour moi

<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

0
SRI RaMan

Pour résoudre ce problème simplement.

  1. sélectionnez toutes les bibliothèques dans "Dépendances Maven" du projet associé.
  2. il suffit de faire "Actualiser" du bouton droit de la souris ...

La raison en est l'information de cache, alors actualisez simplement les informations.

0
Munseok Koh

Le référentiel central maven ne contient pas de fichier jar pour le groupId/artifactId donné uniquement/ pom.xml

maven central results

Vous utilisez Spring 3.2, je vous suggère donc simplement de mettre à niveau hibernate vers la version la plus récente (4.2.6.Final), qui devrait comporter une référence à jta 1.1. Ou tout simplement inclure la version 1.1 dans votre pom qui a un pot dans Maven Central.

0
M. Deinum