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?
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.
C:\Program Files\Java\jdk1.7.0_04
).Cela a fonctionné dans un scénario particulier que j'ai rencontré.
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
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é:}
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
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:
Et cela a fonctionné pour moi.
Pour résoudre ce problème, ajoutez le fichier tools.jar dans window-> preferences-> ant-> runtime.
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.
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.
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.
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
Quand tout le reste est correct essayez ce qui suit
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.
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.
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"/>
Il suffit de définir le chemin JDK à partir des étapes ci-dessous:
Allez dans 'Exécuter' -> Outils externes -> Configuration des outils externes
-> Sélectionnez 'JRE' Ensuite, dans la liste déroulante, sélectionnez le JDK disponible. ex. jdk1.8.0_25
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.
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.
Pour votre information, j'utilise Windows 7 et j'ai dû redémarrer Windows pour que le nouveau paramètre Java_HOME prenne effet.
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"/>
Définissez Java_HOME dans les variables d’environnement en tant que D:\Program Files\IBM\SDP\jdk
Ne 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.
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
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.
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.
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)