115 votes

Artefact manquant com.sun: tools: jar

J'ai suivi le tutoriel d'initiation, mais je suis coincé après avoir importé le regardern projet à l'aide de Maven. Je suis à l'aide d'Eclipse Indigo en cours d'exécution sur 64 bits Windows 7.

Tous les projets importés ont la même erreur:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

Après quelques heures de recherche sur des forums, j'ai essayé:

L'installation de la dernière version de Java 1.6.029 Mon changement d' JAVA_HOME variable d'environnement du point de \program files\Java\jdk1.6_029 Mon changement d'Eclipse Java préférences pour utiliser le JRE jdk1.6_029.

Je voudrais vraiment aiment expérimenter avec regardern, mais pourquoi il y a un peu de posts, je n'arrive pas à trouver un consenus réponse sur la solution. Certaines personnes disent que le Soleil enlevé quelque chose à partir du jdk 64 bits, d'autres disent que vous devez modifier vos fichiers xml, beaucoup de gens ont dit que vous avez changer votre JAVA_HOME, et un autre a dit que vous avez à changer votre VM options pour Eclipse.

Toute aide sur la compensation ce serait apprécié, et peut-être utile pour beaucoup, puisque je n'ai pas particulièrement étrange d'installation ici.

(edit) Ici, c'est le pom.xml dans le premier projet. Eclipse drapeaux d'erreur dans la ligne qui dit:

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

  <parent>
    <groupId>com.googlecode.playn</groupId>
    <artifactId>playn-project</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <artifactId>playn-android</artifactId>
  <name>PlayN Android</name>
  <packaging>jar</packaging>

  <repositories>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- needed because Android uses the same JSON code as playn-java;
         that should be factored into a library shared by both backends -->
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-java</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>${android.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
  </build>
</project>

60voto

Kanmuri Points 394

Je viens de poster sur cette question à propos de cette même question, et comment je l'ai résolu, mais je vais coller (et développer) ici, puisqu'il semble plus pertinent.

J'ai eu le même problème lors de l'utilisation d'Eclipse sous Windows 7, même quand j'ai enlevé le JRE à partir de la liste des Jre dans l'Eclipse paramètres et juste eu le JDK là.

Ce que j'ai fini par avoir à faire (comme vous l'avez mentionné dans votre question) a été de modifier la ligne de commande du raccourci que j'utilise pour lancer Eclipse pour ajouter la -vm argument comme suit:

-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

Bien sûr, vous réglez que pour pointer vers le répertoire bin de votre JDK installer. Ce que ce fait est la cause de l'Éclipse elle-même à être en cours d'exécution à l'aide de la JDK au lieu de JRE, et puis il est capable de trouver l' tools.jar correctement.

Je crois que cela a à voir avec la façon dont Eclipse trouve son défaut JRE lorsqu'aucun n'est spécifié. J'imagine qu'il a tendance à préférer JRE sur JDK (pourquoi, je ne sais pas) et va pour la première compatible JRE qu'il trouve. Et si c'est hors de clés de registre de Windows comme Vladiat0r de répondre à l'indique, il semble pour l' HKLM\Software\JavaSoft\Java Runtime Environment touche d'abord au lieu de l' HKLM\Software\JavaSoft\Java Development Kit - clés.

32voto

J'ai eu le même problème lors de l'élaboration d'une simple application de service web, dans mon cas, j'ai dû ajouter un codehous plug-in afin d'obtenir jaxws bibliothèques. Cependant, pom maven pour poser sur les outils fichier jar.

Je dois dire que commentaires ci-dessus sont correctes, vous pouvez inclure ci-dessous l'entrée dans le fichier pom:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>

Mais, ce qui va arriver quand vous devez déployer une instance de production? Vous pouvez remplacer le chemin d'accès avec une référence à une variable d'environnement système, mais qui ne fait toujours pas l'air bien, au moins pour moi.

J'ai trouvé une autre solution dans un StackOverflow commentaire:

Maven 3 Artefact problème

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

Ils suggèrent notamment une exclusion instruction pour l'outil pot et il fonctionne. Donc, en résumant: vous pouvez inclure une règle d'exclusion au sein de votre dépendance et d'éviter d'avoir le tool.jar question:

 <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>

28voto

Denny Points 183

J'ai rencontré le même problème et la façon dont j'ai pu le résoudre a été d'ajouter l'emplacement de dépendance de tools.jar dans pom.xml. Ainsi:

  <dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>
 

Assurez-vous de changer le chemin d'accès système à l'endroit où votre fichier tools.jar est situé.

9voto

Jakub Adamek Points 171

La même chose avec moi et Windows 7. J'ai fini par ajouter deux lignes à eclipse.ini:

-vm C: \ Program Files \ Java \ jdk1.6.0_35 \ bin

J'ai essayé d'utiliser% JAVA_HOME% là-bas, mais cela n'a pas fonctionné.

6voto

Sealsix Points 11

J'ai résolu ce problème dans les paramètres d'Eclipse 4.3 - uniquement en ajoutant des bibliothèques JDK aux bibliothèques de JRE.

Allez dans les fenêtres -> paramètres -> Java -> JRE installés -> sélectionnez JDK et cliquez sur Édition -> cliquez sur Ajouter des JAR externes et ajoutez tools.jar (placés dans JDK / lib)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X