web-dev-qa-db-fra.com

Problème d'artefact du Maven 3

J'ai fait un nouveau projet struts dans Eclipse en utilisant struts2-archtype-starter.

Quelques erreurs dans mon projet déjà avant de faire quoi que ce soit. Résolu la plupart d'entre eux mais il y en a 1 qui me posent encore quelques problèmes.

Missing artifact com.Sun:tools:jar:1.5.0:system pom.xml

J'ai essayé d'ajouter manuellement le fichier tools.jar à mon référentiel, mais cela n'a pas résolu le problème.

Mon pom ressemble à ceci

<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.divespot</groupId>
    <artifactId>website</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>E-Divespot diving community</name>
    <url>http://www.e-divespot.com</url>
    <description>A website to support divers from all around the world.</description>

    <dependencies>
        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>

        <!--  Struts 2 -->
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.0.11.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-sitemesh-plugin</artifactId>
            <version>2.0.11.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.0.11.2</version>
        </dependency>

        <!-- Servlet & Jsp -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Jakarta Commons -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- Dwr -->
        <dependency>
            <groupId>uk.ltd.getahead</groupId>
            <artifactId>dwr</artifactId>
            <version>1.1-beta-3</version>
        </dependency>
    </dependencies>

    <build>
      <finalName>website</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                   <source>1.6</source>
                   <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.5</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
33
Mark Baijens

L'erreur que vous voyez est probablement due au fait que votre chemin Java_HOME n'est pas configuré correctement. Voyez-vous quelque chose comme C:\{directories to jre}\..\lib\tools.jar?

Vous pouvez faire démarrer Eclipse en utilisant votre JDK intégré en modifiant le fichier Eclipse.ini et en ajoutant quelque chose comme

-vm
C:\{directories to JDK}\bin\javaw.exe

Ce que j'ai appris, c'est qu'Eclipse par défaut utilisera votre système jre pour démarrer Eclipse. Vous avez probablement vu un message lors du démarrage d'Eclipse semblable à "Eclipse s'exécute sous un JRE et m2Eclipse nécessite un JDK certains plugins ne fonctionneront pas"

Si vous allez dans (dans Eclipse) Aide -> Détails d'installation et recherchez un -vm, vous le verrez probablement pointer vers un endroit qui n'a pas la structure de chemin qu'il attend.

Remarque: Pour une raison quelconque, lorsque j'ai rencontré ce problème, Java.home dans maven a été évalué à partir de l'endroit où Eclipse a été lancé. Ainsi, lorsqu'il essaie d'extraire le fichier tools.jar de ce qu'il considère comme Java.home, il se peut que ce ne soit pas ce que vous définissez réellement comme Java_HOME en tant que variable env/système.

45
John Vint
<dependency>
    <groupId>org.Apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>${struts2.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.Sun</groupId>
        </exclusion>
    </exclusions>
</dependency>
10
Thamizharasu

Vous ne pouvez pas utiliser tools.jar à partir d'un référentiel.

Malheureusement, quelque chose dans votre arbre de dépendance pense que vous le pouvez. Ainsi, vous devez utiliser un "exclut" pour vous débarrasser de la dépendance existante, puis la remplacer par la suivante.

Si vous faites correspondre la version ci-dessous à celle du message d'erreur, vous n'aurez peut-être pas besoin des "exclus".

Vous avez besoin:

  <profiles>
    <profile>
      <id>default-tools.jar</id>
      <activation>
        <property>
          <name>Java.vendor</name>
          <value>Sun Microsystems Inc.</value>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>com.Sun</groupId>
          <artifactId>tools</artifactId>
          <version>whatever</version>
          <scope>system</scope>
          <systemPath>${Java.home}/../lib/tools.jar</systemPath>
        </dependency>
      </dependencies>
    </profile>
3
bmargulies

Besoin d'ajouter une autre réponse. Après la mise à niveau de m2e vers 1.4.20130601-0317, l'erreur est revenue. Encore une fois, aucune des solutions proposées n'a fonctionné, y compris celle que je viens de proposer. Finalement, j'ai trouvé le coupable: y compris org.htmlparser:1.6 avait une dépendance implicite sur tools.jar. Aucune idée pourquoi la suppression des jre installés a aidé avec l'ancien m2e (1.0.quelque chose). Maintenant, la solution est d'exclure tools.jar:

    <dependency>
        <groupId>org.htmlparser</groupId>
        <artifactId>htmlparser</artifactId>
        <version>1.6</version>
        <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.Sun</groupId>
            </exclusion>
        </exclusions>
    </dependency>
2
mplwork

Ayant eu le même problème récemment, aucune des solutions ci-dessus n'a fonctionné pour moi. Je suis tombé sur http://blog.samratdhillon.com/archives/598 et j'ai pensé que c'était le bug Eclipse mentionné ici.

J'ai dû supprimer tous les jre installés de la configuration d'Eclipse (Window -> Preferences -> Java -> Installed JREs) et ne garder qu'un seul jdk. Après cela, maven a très bien fonctionné sans aucune modification de Eclipse.ini ou autre chose. C'est avec Ecplise Indigo Service Release 1.

1
mplwork

Le problème principal est que mavan ne peut pas affiner tool.jar. donc ce problème se produit u il suffit d'ajouter le fichier tool.jar dans votre projet .Le Tool.jar présent en vous Java software C:\Program Files\Java\jdk1.6.0_14\lib
essayez ce code, j'espère que votre exécution sera réussie http://maven.Apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 Strust2Testing Strust2Testing 0.0.1-SNAPSHOT war org.Apache.struts

        <artifactId>Struts2-core </artifactId>
        <version>2.3.15.1</version>
        <exclusions>
    <exclusion>
        <artifactId>tools</artifactId>
        <groupId>com.Sun</groupId>
    </exclusion>
</exclusions>
    </dependency>
</dependencies>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
0
GAURAV KUMAR GUPTA

L'exemple d'Eclipse.ini:

-startup
plugins/org.Eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.Eclipse.epp.package.Java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
C:\Java\JDK\1.6\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024m

-vm valeur: Linux Exemple:

-vm
/opt/Sun-jdk-1.6.0.02/bin/Java

De entrez la description du lien ici

0
VSE

De façon confuse, la propriété $ {Java.home} résoudra sa valeur à partir de la JRE_HOME variable d'environnement.

http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide (recherchez Java.home)

Si vous ne voulez pas changer Java_HOME en racine jre, créez le JRE_HOME variable à la place.

0
Michael O'Cleirigh