web-dev-qa-db-fra.com

Pourquoi ANT me dit-il que Java_HOME a tort alors que ce n'est pas le cas?

Je reçois l'erreur: 

C:\dev\ws\springapp\build.xml: 81: impossible de trouver un compilateur javac. JDK . Il est actuellement défini sur "C:\Program Files\Java\jre6"

Mais j’ai clairement défini mon Java_HOME sur C:\Program Files\Java\jdk1.6.0_14

Où ANT obtient-il cette valeur?

58
Ankur

Lorsque vous dites que vous avez "clairement défini" Java_HOME sur "C:\Program Files\Java\jdk1.6.0_14" - C’est ce que vous voyez lorsque vous exécutez "set" à partir de la ligne de commande? Je pense que Ant va deviner une valeur pour Java_HOME si aucune n'est définie. Est-il possible que vous ayez défini JAVAHOME au lieu de Java_HOME?

Si ce n'est pas le cas, je vous suggère de modifier le fichier batch ant.bat (et ce qu'il appelle - je ne me souviens pas s'il est compliqué ou non) pour imprimer Java_HOME au début et à divers autres endroits intéressants.

33
Jon Skeet
  1. Dans Eclipse, cliquez sur Exécuter Outils externes Configurations d'outils externes .
  2. Cliquez sur l'ongletJRE.
  3. Cliquez sur le bouton Installed JREs ... .
  4. Cliquez sur le bouton Ajouter .
    (Sélectionnez Standard VM , le cas échéant.)
  5. Cliquez sur le bouton Répertoire .
  6. Accédez à votre version JDK (pas JRE) de votre Java installé
    (par exemple C:\Program Files\Java\jdk1.7.0_04).
  7. Cliquez sur Terminer etOK.
  8. Sélectionnez le JDK dans Séparez JRE et cliquez sur Fermer .
  9. Relancez votre script Ant - amusez-vous!

Cela a fonctionné dans un scénario particulier que j'ai rencontré.

75
Luigi DAmico

J'ai rencontré le même problème lorsque j'essaie d'exécuter Ant build à l'aide de la commande suivante:

Java -cp ant.jar:ant-launcher.jar org.Apache.tools.ant.Main

Le résultat de la commande est:

BUILD FAILED
XXX/build.xml:8: Unable to find a javac compiler;
com.Sun.tools.javac.Main is not on the classpath.
Perhaps Java_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/Java-6-openjdk/jre"

Il semble que l'exécutable Java sélectionne "/ usr/lib/jvm/Java-6-openjdk/jre" comme Java_HOME, par opposition à "/ usr/lib/jvm/Java-6-openjdk" où JDK est installé.

J'ai résolu ce problème en définissant fork="yes" dans ma tâche <javac>.

Jetez un oeil à: http://ant.Apache.org/manual/Tasks/javac.html

17
Ronnie

Il est également possible que vous ayez inclus/bin dans votre paramètre Java_HOME, et que Ant y ajoute/bin - de ce fait, ne trouve aucun exe. Il m'est arrivé:}

15
tom

Assurez-vous que vous utilisez pas utilisez le point-virgule final: cela ne fonctionnera pas: 

set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;

Cette volonté:

set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
8
pcomitz

J'ai rencontré le même problème. Je lierais pour lancer Ant task depuis Maven build et j'ai eu le problème. Je l'ai corrigé comme étapes ci-dessous:

  • Assurez-vous que Java_HOME est défini correctement. Vous pouvez le vérifier dans Windowns en ligne de commande comme suit:
  • Copiez le fichier tools.jar de% Java_HOME%\lib dans le répertoire lib de Maven.

Et cela a fonctionné pour moi. 

7
Luan Vo

Pour résoudre ce problème, ajoutez le fichier tools.jar dans window-> preferences-> ant-> runtime.

5
Shams

Dans Eclipse, définissez le paramètre JRE installé sur le JDK - dans le projet (propriétés du projet -> Chemin de construction Java -> Bibliothèques) ou par défaut global dans les préférences (Java -> JRE installés). Le paramètre eclispe est plus fort que la variable système.

4
r2d2

J'espère que vous connaissez les variables d'environnement Système et Utilisateur. Les utilisateurs sont préférés au système. Si vous avez défini votre Java_HOME dans les variables système et s'il existe une entrée pour la même chose dans les variables utilisateur, vous obtiendrez cette dernière uniquement. 

Cliquez avec le bouton droit sur Poste de travail, allez dans les propriétés, sélectionnez l’onglet Avancé et cliquez sur Variables d’environnement pour afficher la liste des variables d’environnement utilisateur et système.

3
vpram86

Le point-virgule me rejetait: j'avais Java_HOME réglé sur "C:\jdk1.6.0_26;" au lieu de "C:\jdk1.6.0_26". J'ai supprimé le point-virgule après avoir suivi la suggestion de Jon Skeet d'examiner le fichier ant.bat. Cela fait partie de ce fichier:

if "%Java_HOME%" == "" goto noJavaHome
if not exist "%Java_HOME%\bin\Java.exe" goto noJavaHome

Ainsi, le point-virgule n'a pas été coupé à la fin, ce qui a empêché la recherche du fichier. Par conséquent, la valeur par défaut est "C:\Java\jre6" ou quelque chose du genre.

La partie déroutante est que la HowtoBuild page stipule d'utiliser le point-virgule, mais cela semble le casser.

3
Brandon Montgomery

En fait, j'ai trouvé cette réponse sur superuser.com, mais je devais copier le fichier tools.jar de mon répertoire JDK\lib dans le répertoire JRE\lib.

Cela n'a aucun sens ... la seule chose à laquelle je peux penser est que Sun a introduit ce bogue dans le dernier runtime Java (Java 7 Update 11) ou un bogue dans Ant dans la façon dont il lit l'emplacement JDK actuel (le JRE est plus mis à jour que le JDK évidemment qui est aussi stupide de Sun ... ils devraient libérer le JDK chaque fois qu'ils mettent à jour le JRE).

Mon Java_HOME a été défini correctement. J'ai confirmé en faisant "set Java_HOME". Il a pointé sur mon répertoire JDK et a été orthographié correctement. Cependant, Ant affirmait ne pas pouvoir trouver de javac, mais pensait que Java_HOME se trouvait dans mon répertoire JRE.

Mon système fonctionnait bien avant les dernières mises à jour de Sun JRE7 (10 et 11). Ant est la version 1.8.4

2
kenyee

Quand tout le reste est correct essayez ce qui suit

  1. Fenêtre Aller à -> Préférences -> Ant -> Exécution -> ClassPath
  2. Développez Global Entries et vérifiez les outils jdk disponibles ici.
  3. Ajoutez le fichier tools.jar requis à partir d'une version spécifique de Java telle que "C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar" 
  4. Maintenant, construisez et vérifiez les résultats.

Remarque: Ajoutez tools.jar pour le compilateur Java que vous souhaitez utiliser et donnez-lui une préférence en le déplaçant vers le haut de la liste tools.jar lorsque plusieurs outils.jar (compilateurs Java) sont présents.

2
vikas pachisia

Si vous avez défini Java_HOME mais qu'il y a une faute de frappe, vous verrez également la référence fictive à un chemin jre6.

2
d0mw

Je faisais face au même problème, en définissant la propriété exécutable de la balise javac sur l'emplacement de javac.exe a résolu le problème pour moi .

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
2
user1244663

Il suffit de définir le chemin JDK à partir des étapes ci-dessous:

  1. Allez dans 'Exécuter' -> Outils externes -> Configuration des outils externes

  2. -> Sélectionnez 'JRE' Ensuite, dans la liste déroulante, sélectionnez le JDK disponible. ex. jdk1.8.0_25

1
user3391421

Le travail rapide pour le même est

Copiez C:\Program Files\Java\jdk1.6.0_14\lib\tools.jar dans C:\Program Files\Java\jre6\lib \

Cette exception se produit car Java_HOME est défini sur C:\Program Files\Java\jre6 et Ant n'est pas en mesure de trouver le fichier tools.jar.

0
minhas23

Il est fréquent d'obtenir ce problème. Je ne peux pas définir de répertoire principal Java spécifique dans mon système car j'ai 2 versions différentes de Java (Java 6 et Java 7) pour différents environnements . Pour résoudre le problème, j'ai inclus le chemin JDK dans la configuration d'exécution lors de l'ouverture du build fichier .xml. Ainsi, 2 fichiers de construction différents utilisent 2 versions de Java différentes pour la construction. Je pense qu'il pourrait y avoir une meilleure solution à ce problème mais au moins l'approche ci-dessus évite de définir la variable Java_HOME.

0
user1588737

Pour votre information, j'utilise Windows 7 et j'ai dû redémarrer Windows pour que le nouveau paramètre Java_HOME prenne effet.

0
user3113079

Si besoin d'exécuter ant dans Eclipse avec Eclipse jdk intégré, ajoutez la ligne ci-dessous dans build.xml

<property name="build.compiler" value="org.Eclipse.jdt.core.JDTCompilerAdapter"/>
0
Andrew TR

Définissez Java_HOME dans les variables d’environnement en tant que D:\Program Files\IBM\SDP\jdkNe donnez pas de guillemets ni de points-virgules. Cela fonctionne pour moi.Veuillez essayer la solution . En fait, dans ant.bat, il recherche le Java_HOME approprié, au cas où ant.bat ne pourrait pas le trouver, alors c'est Java_HOME qui pointe le JRE par défaut.

0
Rajat Saha

eu le même problème;

c:\jb\src\build.xml:191: Unable to find a javac compiler;
com.Sun.tools.javac.Main is not on the classpath.
Perhaps Java_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Total time: 0 seconds

c:\jb\src>echo %Java_HOME%
c:\Program Files\Java\jdk1.7.0_13

solution:

path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "Java_HOME=c:\Program Files\Java\jdk1.7.0_13"

Je suppose que seule l’instruction jdk path le ferait, mais je suis trop paresseux pour le comprendre, la solution ci-dessus est à l’épreuve des balles. :-)

Également en utilisant Windows7

0
macw

J'ai fait face à ce problème lors de la construction de mon projet avec Jenkins. Premièrement, il n'a pas pu trouver ant.bat, ce qui a été corrigé en ajoutant le chemin d'accès à ant.bat au chemin de la variable d'environnement système. Ensuite, ant n'a pas pu trouver le répertoire jdk. Ce problème a été résolu en cliquant avec le bouton droit sur my computer > properties > advanced > environment variables, en créant une nouvelle variable d'environnement appelée Java_HOME et en lui attribuant la valeur C:\Program Files\Java\jdk1.7.0_21. Ne créez pas cette variable d'environnement dans les variables utilisateur. Créez-le sous Variables système uniquement.
Dans les deux cas, je devais redémarrer le système.

0
Nav

Je faisais également face au même problème. J'utilise Windows 7 et deux versions de Java sont installées. J'ai d'abord installé la dernière version de Java 7, puis la version 5.

Contenu de mon répertoire d'installation Java:

C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7

et mon Java_HOME a la valeur correcte, à savoir:

C:\>set ja
Java_HOME=C:\Program Files\Java\jdk1.5.0_14

Mais je continuais à avoir le même problème:

XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: Unable to find a javac compiler;
com.Sun.tools.javac.Main is not on the classpath.
Perhaps Java_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Après avoir essayé toute la suggestion dans ce fil, j'ai réalisé mon erreur. J'essayais de définir la variable d'environnement dans "Variables utilisateur" au lieu de la section "Variables système". Après l'avoir défini dans "Variables système", cela a bien fonctionné. Je suis confronté à un autre problème cependant.

La version par défaut de Java vers laquelle il pointe est toujours 7.

C:\>Java -version
Java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

Je ne suis pas sûr de savoir comment faire pointer la version 5. 

0
ggaur

J'ai eu le même problème. Mon paquet JDK signalé par Java_HOME ne contenait aucun outil.jarAssurez-vous que votre instal.lation JDK a tools.jar 

(clairement le message d'erreur est déroutant)

0
ejaenv