Échec de la construction de Maven: "Impossible de localiser le compilateur Javac dans: problème jre ou jdk"

112

Mon JAVA_HOME est défini sur:

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

Après avoir couru 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 délicate

Veuillez vous assurer que vous utilisez JDK 1.4 ou supérieur et non un JRE

Lorsque j'exécute la configuration, elle est définie sur JRE6. Comment le changer en JDK 1.6 que j'ai déjà installé?

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'obtiens toujours la même erreur.

J'utilise le plugin Eclipse Maven. Comment puis-je passer de JRE à JDK dans Eclipse?

Gandalf StormCrow
la source
Avez-vous vérifié deux fois à l'aide de la commande de ligne de setcommande pour vous assurer que JAVA_HOME est défini sur ce que vous pensez être?
Powerlord
J'utilise java au quotidien .. tout fonctionne bien ici c'est: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
Gandalf StormCrow
1
Définissez <fork> true </fork> lors de la définition de l'exécutable.
Robin
Cela ne nous dit pas vraiment quelle installation Java java -versionest en cours d'exécution; il peut s'agir de l'installation JRE ou JDK. javac -versionserait un peu plus utile. Cependant, même dans ce cas, si PATH est correct et JAVA_HOME est erroné, ceux-ci apparaîtront toujours comme vous vous attendez.
Powerlord
1
De plus, l'exécutable doit être ... \ bin \ javac, vous devez spécifier l'exécutable réel, pas seulement le chemin.
Robin

Réponses:

141

Vous pouvez essayer de mettre à jour le JDK qu'utilise Eclipse, comme suit:

Ajoutez et définissez le JRE dans le menu FenêtrePréférences ...JavaJRE 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 des problèmes. Essayez de copier votre JDK vers un autre emplacement et de mettre à jour votre JAVA_HOME.

lucratif
la source
1
C'est en effet la première partie de votre question, le truc de JAVA_HOME est ok
Gandalf StormCrow
47
Pour moi, une étape supplémentaire était nécessaire: aller dans les propriétés dudit projet-> chemin de construction java-> bibliothèques-> sélectionner "JRE System Library", cliquer sur Edit et sélectionner "Workspace default JRE"
maayank
1
ne me suffisait pas, a dû modifier eclipse.ini. Je crois qu'il y a un bug.
ruhsuzbaykus
Cela n'a fonctionné pour moi que lorsque j'ai vérifié le jdk approprié dans l'environnement d'exécution -> JRE compatibles.
Vedran
9
De plus, si vous exécutez Maven à partir d'une configuration d'exécution eclipse que vous avez créée avant ces modifications de configuration, n'oubliez pas d'aller dans la fenêtre de configuration Exécuter / onglet JRE et de sélectionner le bon JRE. Sinon, vous pourriez utiliser l'ancien JRE incorrect même après avoir mis à jour vos paramètres d'éclipse et de projet avec le nouveau.
Diana
20

Le fichier eclipse.ini a besoin de l' vmargument pour pointer vers votre emplacement JDK.

Modifiez le eclipse.inifichier pour qu'il pointe vers votre domicile JDK, comme suit:

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

Cela garantit qu'Eclipse s'exécuterait sur le JDK et non sur un JRE par défaut sur votre machine.

Sai Hegde
la source
5
Cela a résolu mon problème. D'après les recherches sur le Web, il semble que Maven utilise JAVA_HOME, mais le plug-in Maven ne sait rien de JAVA_HOME et utilise par défaut la VM utilisée pour démarrer Eclipse.
jnosek le
13

Tu essayes:

Accédez à Preferences/Java/Installed JREset ajoutez-en un pour l'emplacement "C:\Program Files\Java\jdk1.6.0_27\jreou quelque chose comme ça.

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

Comme vous pouvez le voir, le chemin C:\Program Files\Java\jre6\..\lib\tools.jarn'a de sens que si la première partie (jusqu'au / ..) est remplacée par C:\Program Files\Java\jdk1.6.0_27\jre.

cuocdoibian1971
la source
10

Définir fork sur true a résolu le problème pour moi.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
Prash
la source
9

J'ai eu exactement le même problème! J'avais cherché et recherché pendant des jours parce que tout le babillage sur "mettre le -vm c: \ program files \ java \ jdkxxxxx \ bin" dans l'ini ar comme argument pour un raccourci n'a pas du tout aidé !

(Ai-je l'air frustré? Croyez-moi, c'est un euphémisme! Je suis simplement furieux parce que j'ai perdu une semaine à essayer de rendre Maven fiable!)

J'ai eu un comportement très imprévisible. Parfois, il est compilé et parfois non. Si j'ai fait unmaven clean , il n'a pas pu trouver le compilateur et a échoué. Si j'ai ensuite changé quelque chose dans le chemin de construction, cela a soudainement fonctionné à nouveau !!

Jusqu'à ce que je suis allé dans le menu FenêtrePréférencesJavaJRE installés . J'ai ajouté un nouveau JRE en utilisant l'emplacement du JDK, puis j'ai supprimé le JRE. Soudain, Maven est devenu stable!

Peut-être que cela vaut la peine de mettre des lettres avec une taille de police de 30 ou plus dans le manuel 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 à essayer de résoudre leurs problèmes de ce genre! Je ne peux pas imaginer que cela soit publié en version finale. Personnellement, je n'oserais même pas publier une telle chose sous le nom de logiciel bêta ...

Cordialement de toute façon .... Après une semaine de falsification, je peux enfin commencer à développer. J'espère que mon patron ne le saura pas. Il m'a fallu beaucoup d'efforts pour le convaincre de ne pas aller sur .NET et j'en suis déjà désolé.

Lorenzo
la source
1
En bout de ligne, utilisez-le depuis la console et non depuis eclipse, vous n'aurez pas ce genre de problèmes, c'est ce que j'ai réalisé après quelques mois d'utilisation, maintenant assez à l'aise avec maven
Gandalf StormCrow
C'est plus une éclipse ... problème m2e .. J'ai le même problème et les autres IDE (netbeans et IDEA) fonctionnent parfaitement.
joshua
3

J'ai eu le même problème en utilisant Exécuter en tant que -> Installation de Maven dans Eclipse. JAVA_HOME et eclipse.ini étaient OK et pointaient vers mon dernier JDK. Mais m2clipse a utilisé JRE. L'utilisation de mvn install en dehors d'Eclipse a bien fonctionné!

Dans mon cas, j'ai résolu le problème comme suit:

  1. Naviguer dans Eclipse: menu FenêtrePréférencesJava 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 devrait utiliser.

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

Markus
la source
3

Je viens d' installer Maven 3.0.4, ensemble M2_HOME, M2et en JAVA_HOMEconséquence. J'ai ensuite exécuté les commandes suivantes:

mvn archetype:generate....

mvn compile

Je suis tombé en panne, comme un message: maven unable to locate javac compiler.

Sur mon ordinateur, j'ai installé par défaut JRE dans C: \ program files \ java \ jre.1.6 . Et j'ai l'autre C: \ java \ jdk1.6 et JAVA_HOMEmis à ce C: \ java \ jdk1.6 .

Je n'ai rien vu de mal avec mon réglage. Après la recherche, j'ai décidé de regarder mvn.bat, j'ai fait écho à %JAVA_HOME%chaque étape et il s'affichait correctement comme C:\java\jdk1.6, mais lorsque j'exécutais la commande mvn --version, il affichait Java home: C: \ program files \ java \ jre1.1.6 .

Enfin, j'ai découvert que je devais simplement définir -Djava.home=c:\java\jdk1.6comme dans la commande ci-dessous et que je fonctionnais bien 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%

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

smngo
la source
Hé, tu n'as pas besoin d'aller toujours expliquer chaque étape que tu as faite. Veuillez voir Comment répondre à ce point .
mtk
Cela semble être un hack (mais bon ... si cela fonctionne pour vous!) Mais c'est intéressant que la ligne de commande maven ramasse la mauvaise maison Java - c'est notre problème actuel.
plasma147
2

J'ai résolu le problème en changeant l'emplacement du JRE installé dans le répertoire présent dans le JDK lui-même. Définition de la valeur appropriée deJAVA_HOME la variable d'environnement 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

Au départ, je définissais C:\Program Files\Java\jre7comme JRE installé dans Eclipse et j'obtenais la même erreur dans le cas de Maven (Ant fonctionnait bien).

En remplaçant le JRE installé par JRE C:\Program Files\Java\jdk1.7.0_03\jre7installé dans Eclipse, le problème est résolu.

Nikhil
la source
2

N'oubliez pas que si vous exécutez votre projet à partir d'une configuration Eclipse particulière, vous devez changer le Java Runtime dans 'Exécuter les configurations' -> 'Votre configuration maven' -> 'onglet JRE' après avoir ajouté le bon JDK à vos préférences Eclipse.

Ivan Fernandez
la source
2

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

Vérifiez les fichiers de paramètres . Il y en a trois au total, système, utilisateur et projet. C'est probablement dans la configuration d'installation ($ M2_HOME / conf / settings.xml) ou, éventuellement, dans la configuration par utilisateur ($ {user.dir} /. M2 / settings.xml).

Devon_C_Miller
la source
2

Configuration Eclipse uniquement

Suivez les étapes suivantes:

  1. Faites un 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 Editbouton

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

  5. Modifiez JRE comme: Définissez JRE Home = JAVA_HOME ou JAVA_HOME \ jre

Capture d'écran:

Entrez la description de l'image ici

Parthasarathy B
la source
Cela a fonctionné pour moi, merci. J'ai changé la maison JRE dans le dossier JDK.
LadyBernkastel
1

Faites un clic droit sur le menu ProjetPropriétésChemin de construction Java .

Sélectionnez le chemin du système JRE → Modifier . Sélectionnez le JRE par défaut de l'espace de travail et pointez-le sur JDK> 1.4.

asHIS
la source
1

Utilisez le menu FenêtrePréférencesJavaJRE installésEnvironnements d'exécution -> cliquez sur la case à cocher sur le côté droit.

Gambotique
la source
1

La solution est simple. Parfois, Eclipse WindowsPréférencesJavaJRE installés pointant vers C:\Program files\Java\jre.

Quand je l'ai changé, cela C:\Program files\Java\JDK 6.0\jrefonctionne à 100%.

santhosh
la source
1

Comme mentionné par plusieurs autres, la fenêtre Eclipse → Préférences ...JavaLes JRE installés doivent pointer vers le JDK que vous avez installé, pas vers le JRE. Ce n'est qu'alors qu'il peut trouver le ../libdossier mentionné dans le message d'erreur.

Même avec cela, le problème peut se reproduire. Ma sortie dans Eclipse v4.2 (Juno) est de faire un menu MavenMettre à jour le projet ... après quoi le problème disparaît.

Je soupçonne que la raison est que certains des fichiers générés par Eclipse (.classpath, .project, .preferences) sont 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 configuration de Maven dans Eclipse le résout à nouveau.

Solution réelle: omettez les fichiers .files 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) .

avandeursen
la source
1

Dans mon cas, dans le menu Eclipse ExécuterConfigurations de débogage .

Dans l'onglet JRE, la sélection du JDK au lieu du JRE a résolu le problème.

Vathsala Weerasinghe
la source
1

J'ai eu le même problème sur Amazon Linux. Il s'avère que j'ai dû installer la version développeur du JDK:

sudo yum -y install java-1.7.0-openjdk-devel
Evan Siroky
la source
1

Allez dans le menu Fenêtre d' Eclipse → Préférences ...JavaLes JRE installés doivent pointer vers le JDK que vous avez installé, pas vers le JRE.

Sudipto
la source
Mais c'est aussi dans de nombreuses réponses précédentes.
Peter Mortensen le
0

Vous pouvez également vous assurer qu'Eclipse a toutes les modifications mises à jour. Pour ce faire, faites un clic droit sur votre projet puis appuyez sur l'élément de menu "Actualiser".

GregNash
la source
0

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

Voici une autre réponse avec des étapes plus spécifiques / claires [que j'ai vues dans n'importe quelle réponse ici] sur la façon de procéder: Comment installez-vous JDK?

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

cellepo
la source
0

Assurez-vous que le "-vm" dans votre eclipse.ini est sur deux lignes espacées, c'est-à-dire:

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

Je suppose que l'emplacement du compilateur est défini dans un POM pour que le plugin du compilateur se trouve dans l'emplacement JRE affiché, au lieu de l'emplacement JDK sur lequel JAVA_HOME pointe.

Robin
la source
@Robin Où devrais-je chercher exactement cela? le pom me va bien<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>
Gandalf StormCrow
S'il n'y a pas de <executable> défini, alors ce n'est pas ce qui cause votre problème, sauf si le pom que vous regardez hérite d'un pom parent qui l'a défini.
Robin
Lors de la définition de l'exécutable, vous devez également définir <fork> sur true.
Robin le
0

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

Javicha
la source
0

Si vous définissez JAVA_HOME et que le problème persiste, essayez ce qui suit.

(J'ai eu le même problème, sur un PC fraîchement installé.)

En supposant que vous utilisez Eclipse.

  • Ouvrez WindowPréférencesJavaInstalled jre's . Supprimez tout ce que vous avez là, ajoutez le que vous souhaitez utiliser (JDK, pas de JRE!)
  • Dans la même fenêtre, ouvrez maven - installations, ajoutez l'installation de Maven que vous avez téléchargée et extraite quelque part. ( N'utilisez pas l'installation intégrée de Maven. Elle présente des bogues connus.)

C'est tout. Votre projet ne souffrira pas de tels problèmes.

Marcell
la source
0

J'ai eu la même erreur, à cause de la version JUnit . J'avais trois 3.8.1 et je suis passé à 4.8.1.

La solution est donc:

Vous devez vous rendre au POM et vous assurer que votre dépendance ressemble à ceci

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

J'ai changé la configuration de maven-compiler-plugin pour ajouter executableet forkavec la 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.

Soumyajit Swain
la source
0

Faites Echo %JAVA_HOME%et puis mvn --version.

Le chemin du JRE doit être le même ... puis allez dans le menu FenêtrePréférencesJavaL' emplacement du JRE installé doit être le même que celui Java_Homeaffiché.

Vandana
la source
0

Allez dans la boîte de dialogue Propriétés et faites un clic droit sur le projet.

Dans les ressources liées , ajoutez un nouveau chemin appelé JAVA_HOME et placez votre emplacement JDK, quelque chose comme "C: \ Program Files \ Java \ jdk1.8.0_73".

C'est tout!!

Macu Gómez
la source
Je ne pense pas que vous devriez ajouter une variable .. il suffit de changer la configuration JDK sous Exécuter les paramètres en espace de travail JDK
Phani
0

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

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

Reportez-vous au lien pour créer le fichier de construction Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Suivez maintenant les étapes indiquées:

1) Ajoutez votre fichier de construction Ant dans la vue Ant qui se trouve dans la fenêtre de visualisation.

2) faites un clic droit sur votre fichier de construction Ant et sélectionnez Exécuter en tant que et la deuxième option dans cette "Ant Build".

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

4) Sélectionnez l' onglet JRE .

5) Vous verrez trois boutons radio et ils auront JRE ou JDK sélectionné comme option.

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

7) Cliquez sur Appliquer.

C'est tout...!!!

Nishat Lakhani
la source