web-dev-qa-db-fra.com

la construction maven a échoué: impossible de localiser le compilateur Javac dans: problème jre ou jdk

J'ai Java_HOME réglé sur 

C:\Program Files (x86)\Java\jdk1.6.0_18

Après avoir exécuté maven install, je reçois ce message d’Eclipse:

Raison:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.Sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the Java_HOME environment variable.

Je suis certain que c'est la partie la plus délicate 

Assurez-vous d’utiliser JDK 1.4 ou ci-dessus et pas un JRE

Quand j'exécute la configuration sur JRE6, comment puis-je le changer pour JDK 1.6 que j'ai déjà installé

MODIFIER

J'ai même essayé de modifier le plugin:

<plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
                </configuration>
            </plugin>

J'ai toujours la même erreur

Peut-être que j'ai oublié de dire que j'utilise Eclipse maven plugin .. comment puis-je passer de JRE à JDK dans Eclipse?

107
Gandalf StormCrow

Vous pouvez essayer de mettre à jour le JDK utilisé par Eclipse, comme suit:

Ajoutez et définissez le JRE dans Fenêtre-> Préférences ...-> Java-> JRE installés:

JRE type: Standard VM JRE 
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

Si ce n'est pas le cas, il est possible que les crochets et les espaces dans le chemin Java_HOME posent problème. Essayez de copier votre JDK dans un emplacement différent et de mettre à jour votre Java_HOME.

135
lucrussell

Eclipse.ini a besoin de l'argument vm pour qu'il pointe vers votre emplacement de jdk. 

Editez le fichier Eclipse.ini pour qu'il pointe vers votre maison jdk, comme suit:

-vm
C:\Program Files\Java\jdk1.6.0_06

Cela garantit qu'Eclipse sera exécuté à partir du JDK et non de tout JRE par défaut sur votre ordinateur.

19
Sai Hegde

Tu essayes:

Allez à Preferences/Java/Installed JREs et ajoutez-en un pour l'emplacement "C:\Program Files\Java\jdk1.6.0_27\jre ou quelque chose comme ça. 

Supprimer celui pour C:\Program Files\Java\jre6 

Comme vous pouvez le constater, le chemin C:\Program Files\Java\jre6\..\lib\tools.jar n’a de sens que si la première partie (jusqu’à ce que/..) soit remplacée par C:\Program Files\Java\jdk1.6.0_27\jre.

12
cuocdoibian1971

Régler Fork sur true a résolu le problème pour moi.

<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
</configuration>

Merci beaucoup, Sam Yang..vous avez fait ma journée

9
Prash

J'ai eu le même problème EXACT! Je cherchais et cherchais depuis des jours parce que tout le bafouillage de "mettre le -vm c:\programme files\Java\jdkxxxxx\bin" dans l’instance comme argument pour un shortcurt n’a PAS AT ALL heklp! (Est-ce que j'ai l'air frustré? Croyez-moi, c'est un euphémisme! Je suis simplement furieux parce que j'ai perdu une semaine en essayant de rendre Maven fiable!) 

J'ai eu un comportement très imprévisible. Parfois, il compilé, parfois non. Si je faisais un maven clean, il ne pourrait pas trouver le compilateur et a échoué. Si j'ai ensuite changé quelque chose dans le chemin de compilation, cela a soudainement fonctionné à nouveau!

Jusqu'à ce que je suis allé à la fenêtre -> préférences -> Java -> JRE installé. J'ai ajouté un nouveau JRE en utilisant l'emplacement du JDK, puis j'ai supprimé le JRE. Soudain, Maven a couru stable! 

Cela vaut peut-être la peine de mettre des lettres d’environ 30 caractères dans le manuel d’Apache? Avec tout le respect que je vous dois, c’est tout simplement scandaleux pour la communauté Java! Je ne peux pas imaginer combien de jours ont été perdus par tous ces gens, essayant de résoudre leurs problèmes de ce genre! Je ne peux pas imaginer que ceci soit publié en version finale. Personnellement, je n'oserais même pas publier une telle chose sous le nom de logiciel BETA ...

Bien cordialement ... Après une semaine de manipulation, je peux enfin commencer à me développer. J'espère que mon patron ne saura rien à ce sujet. Il m'a fallu beaucoup d'efforts pour le convaincre de ne PAS aller à .NET et j'en suis déjà désolé.

8
Lorenzo

J'ai eu le même problème en utilisant Run as -> Maven install dans Eclipse. Java_HOME et Eclipse.ini étaient corrects et pointaient vers mon dernier JDK. Mais m2clipse utilisait JRE. Utiliser mvn installer en dehors d’Eclipse a bien fonctionné! Dans mon cas, j’ai résolu le problème comme suit: 1. Naviguez dans Eclipse: Fenêtre -> Préférences -> Java -> JRE installés 2. Il y avait deux entrées inactives pour un JRE et un JDK. Celui qui était actif était le dernier JDK installé. Supprimez toutes les entrées sauf celle que maven doit utiliser.

Je pense que Maven ne prend pas en compte celui qui est actif ...

3
Markus

Je viens d'installer maven 3.0.4, définissez M2_HOME, M2 et Java_HOME en conséquence. J'ai ensuite exécuté les commandes suivantes:

mvn archetype:generate....

mvn compile

J'ai eu un message raté tel que: maven unable to locate javac compiler

Sur mon ordinateur, jre est installé par défaut sur c:\program files\Java\jre.1.6 . Et l’autre c:\Java\jdk1.6 et Java_HOME est défini sur ceci c:\Java\jdk1.6

Je ne vois rien de mal avec mon réglage. Après avoir cherché, j’ai décidé de regarder dans mvn.bat, j’ai répercuté %Java_HOME% à chaque étape et il s’affiche correctement sous la forme C:\Java\jdk1.6, mais lorsque j’exécute la commande: mvn --version, il affiche Java home: c:\programmes\Java\jre1.1.6 .

Enfin, j'ai découvert qu'il me suffisait de définir -Djava.home=c:\Java\jdk1.6 comme dans la commande ci-dessous et de bien fonctionner maintenant: 

%MAVEN_Java_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%Java_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

J'espère que cela t'aides.

Remarque: Ceci est pour mvn sur la ligne de commande et non avec Eclipse.

3
smngo

Base sur http://maven.Apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html , vous devrez régler le fork sur true dans votre pom.xml .

2
Sam Yang

Configuration Eclipse uniquement

Effectuez les étapes suivantes:

  1. Clic droit sur les propriétés du projet Eclipse

  2. Chemin de construction Java -> Bibliothèques

  3. Sélectionnez Bibliothèque système JRE -> Cliquez sur le bouton Modifier

  4. Cliquez sur le bouton "JRE installés ..."

  5. Editez JRE comme suit: Définissez JRE Home = Java_HOME ou Java_HOME\jre

ScreentShot:

enter image description here

Merci beaucoup,

Partha

2
Parthasarathy B

On dirait que Maven utilise le JRE, pas le JDK. Peut-être avez-vous installé Maven avant d'installer le JDK? 

Vérifiez les fichiers settings . Il y en a 3 au total, système, utilisateur et projet. C’est le plus souvent dans la configuration d’installation ($ M2_HOME/conf/settings.xml) ou éventuellement dans la configuration par utilisateur ($ {user.dir} /. M2/settings.xml).

2
Devon_C_Miller

J'ai résolu le problème en modifiant l'emplacement de JRE installé dans le répertoire présent dans JDK lui-même. La définition de la valeur correcte de la variable d’environnement Java_HOME n’a pas résolu le problème. 

Dans mon cas, il y a deux répertoires

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

Initialement, je définissais C:\Program Files\Java\jre7 en tant que JRE installé dans Eclipse et la même erreur se produisait dans le cas de Maven (Ant fonctionnait correctement).

En modifiant le JRE installé en C:\Program Files\Java\jdk1.7.0_03\jre7 en tant que JRE installé dans Eclipse, le problème est résolu.

2
Nikhil

La solution est simple, parfois la fenêtre Eclipse -> préférence -> Java -> JRE installés pointant vers C:\Program files\Java\jre, lorsque je l’ai changée en C:\Program files\Java\JDK 6.0\jre, elle fonctionne à 100%. 

1
santhosh

Faites un clic droit sur Projet -> Propriétés -> Chemin de construction Java. Sélectionnez le chemin système JRE -> Modifier. Sélectionnez le JRE par défaut de Workspace et pointez-le sur JDK> 1.4.

1
asHIS

Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side

1
Gambotic

Dans mon cas, dans Eclipse Run-> Debug ConfigurationsIn, l'onglet jre a sélectionné le jdk au lieu du jre a résolu le problème.

1

N'oubliez pas que si vous exécutez votre projet à partir d'une configuration Eclipse particulière, vous devez modifier le runtime Java dans "Configurations d'exécution" -> "Votre configuration maven" -> "Onglet JRE" après avoir ajouté le bon JDK à vos préférences Eclipse.

1
Ivan Fernandez

J'ai eu le même problème sur Amazon Linux. Il s'avère que je devais installer la version de développement du jdk:

Sudo yum -y install Java-1.7.0-openjdk-devel

1
Evan Siroky

Accédez à la fenêtre Eclipse -> Préférences ...-> Java -> JRE installée doit pointer vers le JDK que vous avez installé, pas vers le JRE. 

1
Sudipto

Comme mentionné par plusieurs autres, le Window->Preferences...->Java->Installed JREs Eclipse doit pointer vers leJDKque vous avez installé, not vers le JRE. Ce n’est qu’alors qu’il pourra trouver le dossier ../lib mentionné dans le message d’erreur.

Même avec cela, le problème peut se reproduire. Mon moyen de sortir dans Eclipse (Juno) est de faire un Maven -> Update project... après quoi le problème disparaîtra.

Je suppose que la raison en est que certains des fichiers générés par Eclipse (.classpath, .project, .preferences) se trouvent dans Subversion pour le projet dans lequel je rencontre ces problèmes. Ainsi, une mise à jour svn introduit le problème et une mise à jour de la configuration de maven dans Eclipse le résout à nouveau.

Solution réelle: omettez les fichiers .file générés par Eclipse du contrôle de version , et laissez le plugin maven Eclipse gérer la configuration du projet. (des pointeurs/suggestions supplémentaires sont les bienvenus).

1
avandeursen

J'ai changé la configuration de maven-compiler-plugin pour ajouter un exécutable et fork avec une valeur true. 

            <configuration>
                <fork>true</fork>
                <source>1.6</source>
                <target>1.6</target>
                <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
            </configuration>

Cela a fonctionné pour moi.

0
Soumyajit Swain

Sélectionnez Eclipse> Préférences> Java> JRE installés> sélectionnez l’emplacement jre que vous avez désigné, cliquez sur Édition> Ajouter des fichiers JAR externes et sélectionnez le fichier tools.jar.

0
Dipendra Gurung

faire Echo %Java_HOME%
puis mvn --version

JRE path devrait être identique .... alors allez Window -> preferences - Java - installed jre's
location devrait être identique à ce que Java_Home affiche. 

0
vandana

Assurez-vous que le "-vm" dans votre fichier Eclipse.ini se trouve sur deux lignes distinctes, à savoir:

-vm
C:\Program Files\Java\jdk1.6.0_06
0
Kevin Van Dyck

Avait le même problème. Rien de ce qui précède n'a fonctionné, cela a fonctionné pour moi:

Java_HOME modifié de ...\jdk.1.8.0\à ...\jdk.1.8.0\jre \

0
Coen Damen

Si vous définissez Java_HOME et que le problème persiste, essayez ce qui suit: ..__ (le même problème se présentait sur un ordinateur fraîchement installé).

En supposant que vous utilisez Eclipse.

  • Fenêtre ouverte - Préférences - Java - Les jre installés Supprimez tout ce que vous avez là, ajoutez ce que vous voulez utiliser (JDK, pas de JRE!)
  • Dans la même fenêtre, ouvrez maven - installations, ajoutez l’installation principale que vous avez téléchargée et extraite quelque part. (N'UTILISEZ PAS l'installation maven intégrée, elle contient des bogues connus)

C'est tout. votre projet ne souffrira pas de problèmes particuliers… .. L’espoir est utile.

0
Marcell

De nombreuses autres réponses vous indiquent de diriger votre Eclipse vers un JDK au lieu d'un JRE.

Voici une autre réponse plus précise/claire [que je n’ai jamais vue ici], étape par étape, sur la procédure à suivre:Comment installez-vous JDK?

C'est ce qui m'a résolu pour ce même problème.

0
cellepo

Allez dans les propriétés en faisant un clic droit sur le projet.

Dans LINKED RESOURCES, ajoutez un nouveau chemin nommé Java_HOME et indiquez l'emplacement de votre jdk, quelque chose comme "C:\Program Files\Java\jdk1.8.0_73".

C'est tout!!

0
Macu Gómez

J'ai eu la même erreur, à cause de la version de JUNIT, j'avais 3 3.8.1 et j'ai changé en 4.8.1. 

donc la solution est 

vous devez aller à POM, et assurez-vous que votre dépendance ressemble à ceci 

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
0
Ibo

La solution à ce problème est très simple ....

Si vous n'avez pas le fichier de construction ANT, générez-le. Dans Eclipse, vous pouvez facilement créer un fichier ANT.

Consultez le lien pour créer le fichier de construction ANT [ http://www.codejava.net/ides/Eclipse/how-to-create-ant-build-file-for-existing-Java- projet en Eclipse] .

Suivez maintenant les étapes indiquées:

1) Ajoutez votre fichier de construction ANT dans la vue ANT qui est dans la fenêtre de vue.

2) Faites un clic droit sur votre fichier de construction ANT et sélectionnez Run As et la deuxième option de cette "Ant Build".

3) Une boîte de dialogue s'ouvrira avec diverses options et onglets.

4) Sélectionnez l'onglet JRE.

5) vous verrez 3 boutons radio et ils auront JRE ou JDK sélectionnés en option.

6) Regardez attentivement si les options du bouton radio ont JRE comme sélectionné puis changez-le en JDK.

7) Cliquez sur Appliquer.

C'est tout...!!!

0
Nishat Lakhani

Vous devez indiquer Java_HOME dans mvn.ini (c'est dans le dossier maven /bin), et votre problème disparaîtra.

0
Javicha

Vous pouvez également vous assurer qu'Eclipse dispose de toutes les modifications mises à jour. Pour ce faire, cliquez avec le bouton droit sur votre projet, puis appuyez sur l'élément de menu "Actualiser".

0
GregNash

Je suppose que l'emplacement du compilateur est défini dans un pom pour que le plug-in du compilateur se trouve dans l'emplacement jre affiché, au lieu de l'emplacement jdk sur lequel Java_HOME pointe.

0
Robin