Pourquoi ANT m'a-t-il dit que JAVA HOME était une erreur alors que ce n'était pas le cas?

j'obtiens l'erreur:

C:devwsspringappbuild.xml:81: Impossible de trouver un compilateur javac; COM.soleil.outils.javac.Principal n'est pas sur le chemin de la classe. Peut-être que JAVA_HOME ne pointe pas vers le JDK. It is currently set to "C:Program fichiersJavajre6 "

mais j'ai clairement défini mon JAVA_HOME à être C:Program fichiersJavajdk1.6.0_14

où ANT obtient - il cette valeur?

58
demandé sur Ankur 2009-10-13 11:55:56

24 réponses

quand vous dites que vous avez "clairement défini" JAVA_HOME à "C:\Program fichiers\Java\jdk1.6.0_14" - c'est ce que vous voyez lorsque vous lancez "set" depuis la ligne de commande? Je crois que Ant va deviner une valeur pour JAVA_HOME si on n'est pas fixé du tout... est-il possible que vous ayez mis JAVAHOME au lieu de JAVA_HOME?

si ce n'est rien de tout cela, je vous suggère d'éditer le fichier batch ant.bat (et tout ce qu'il appelle - Je ne me souviens pas s'il est alambiqué ou pas) pour imprimer out JAVA_HOME au départ et à divers autres endroits intéressants.

33
répondu Jon Skeet 2009-10-13 07:59:59
  1. Dans Eclipse, cliquez sur Exécuter Outils Externes Outils Externes Configurations .
  2. cliquez sur l'onglet JRE .
  3. cliquez sur le JRES installé... Bouton .
  4. cliquez sur le bouton ajouter .

    (Sélectionner VM Standard , où applicable.)
  5. cliquez sur le bouton Directory .
  6. naviguez vers votre version JDK (pas JRE) de votre Java installé

    (par exemple C:\Program Files\Java\jdk1.7.0_04 ).
  7. , Cliquez sur Terminer et OK .
  8. sélectionnez le JDK à Separate JRE et cliquez sur Close .
  9. Re-exécuter votre Ant script-amusez-vous bien!

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

74
répondu Luigi DAmico 2014-09-24 12:44:47

j'ai rencontré le même problème lorsque j'ai essayé D'exécuter Ant build en utilisant la commande suivante:

java -cp ant.jar:ant-launcher.jar org.apache.tools.ant.Main

La sortie 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" as JAVA_HOME, par opposition à "/usr/lib/jvm/java-6-openjdk" où JDK est installé.

j'ai résolu cette question en inscrivant fork="yes" dans ma tâche <javac> .

Regardez: http://ant.apache.org/manual/Tasks/javac.html

17
répondu Ronnie 2012-06-01 00:00:20

il est également possible que vous ayez inclus /bin dans votre paramètre JAVA_HOME, et Ant y ajoute /bin - ne trouvant donc aucun exe. It's happened to me:}

15
répondu tom 2011-04-05 21:00:49

assurez-vous que vous faites pas utilisez le point-virgule: cela ne fonctionnera pas:

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

Ce sera:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
8
répondu pcomitz 2013-01-01 20:18:14

j'ai rencontré la question similiar. Je voudrais lien pour lancer la tâche Ant ou Maven build et j'ai eu le problème. Je l'ai corrigé comme suit:

  • assurez-vous que JAVA_HOME est réglé correctement. Vous pouvez le vérifier sur Windowns en ligne de commande: C: > echo % JAVA_HOME% Résultat ressemblerait à: C:\Progra ~ 1 \ Java\jdk1.6.0_30\
  • la Copie du fichier des outils.bocal de l' %JAVA_HOME%\lib dans le répertoire lib de Maven.

et ça a marché pour moi.

7
répondu Luan Vo 2012-10-09 08:22:30

pour résoudre ce problème ajouter des outils.fichier jar dans window->preferences->ant-> runtime .

5
répondu Shams 2011-08-25 09:40:48

dans eclipse définit le paramètre JRE installé à JDK-dans le Projet (Propriétés du projet -> Java Build Path-> Libraries), ou par défaut global dans les préférences (Java->Installed JREs). Le paramètre eclispe est plus fort que la variable système.

4
répondu r2d2 2011-06-04 07:21:36

j'espère que vous êtes au courant des variables environnementales du système et de l'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 y a une entrée pour la même dans les variables utilisateur, alors vous obtiendrez la dernière seulement.

faites un clic droit sur mon ordinateur, allez à Propriétés, sélectionnez onglet Avancé et cliquez sur variables environnementales pour voir la liste des variables d'environnement utilisateur et système.

3
répondu vpram86 2009-10-13 08:05:40

le point-virgule me lançait: 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 . Ceci fait partie de ce fichier:

if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

donc le point-virgule n'a pas été enlevé de l'extrémité, ce qui fait que cela ne trouve pas le fichier, donc défaut de "C:\Java\jre6" ou quelque chose comme ça.

la partie confuse est-ce que la page HowtoBuild indique d'utiliser le point-virgule, Mais cela semble le briser.

3
répondu Brandon Montgomery 2011-07-11 19:40:33

je faisais face au même problème, rendant la propriété exécutable dans la balise javac à être positionnée à l'emplacement de javac.exe a résolu le problème pour moi. Cela a résolu le problème

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
2
répondu user1244663 2012-09-11 09:38:08

effectivement trouvé cette réponse sur superuser.com mais j'ai dû copier des outils.jar de mon JDK répertoire\lib de la JRE\lib.

N'a aucun sens...la seule chose à laquelle je pense c'est que Sun a introduit ce bug Dans Le Dernier Java runtime (Java 7 Update 11) ou un bug dans Ant pour lire l'emplacement actuel de JDK (le JRE est plus mis à jour que le JDK évidemment, ce qui est aussi stupide de Sun...ils devraient publier le JDK chaque fois qu'ils mettent à jour le JRE).

mon JAVA_HOME a été réglé correctement. J'ai confirmé en faisant "set JAVA_HOME". Il pointait vers mon répertoire JDK et était orthographié correctement. Cependant, Ant prétendait qu'il ne pouvait pas trouver javac, mais pensait que JAVA_HOME était dans mon répertoire JRE.

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

2
répondu kenyee 2013-01-25 22:06:51

si vous avez JAVA_HOME mais qu'il y a une faute de frappe, vous verrez aussi la référence bidon à un chemin jre6.

2
répondu d0mw 2013-12-17 22:50:22

quand tout le reste est correct essayez ce qui suit

  1. Aller À La Fenêtre -> Préférences -> Ant -> Runtime -> ClassPath
  2. élargissez les entrées globales et vérifiez les outils jdk disponibles ici.
  3. Ajouter les outils nécessaires.jar d'une version spécifique de java telle que "C:\Program fichiers\Java\jdk1.6.0_45\lib\tools.jar"
  4. maintenant construisez et vérifiez les résultats.

Note: Ajouter outils.jar pour le compilateur de java que vous souhaitez utiliser et donner la préférence à il en la déplaçant vers le haut dans la liste des outils.pot lorsque plusieurs outils.jar (compilateurs java) sont présents.

2
répondu vikas pachisia 2014-03-27 21:14:06

j'ai eu le même problème. Mon paquet JDK pointé par JAVA_HOME n'avait pas d'outils.pot Assurez-vous que votre JDK instal.règlement dispose d'outils.jar

(clairement l'erreur de message prête à confusion)

0
répondu ejaenv 2012-10-16 11:25:38

Set JAVA_HOME dans les variables d'environnement comme D:\Program Files\IBM\SDP\jdk Ne donnez pas de guillemets ou de point-virgule. Il fonctionne pour moi.S'il vous plaît essayez la solution. En fait, à ant.chauve-souris contrôles pour JAVA_HOME dans le cas où si la fourmi.bat ne peut pas le trouver alors il est JAVA_HOME points le JRE par défaut.

0
répondu Rajat Saha 2012-10-20 04:16:04

j'étais également confronté au même problème. J'utilise Windows 7 et j'ai installé deux versions de java. 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 été réglé à la valeur correcte, qui était:

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

mais j'ai quand même eu 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 en essayant toutes les suggestions dans ce fil j'ai réalisé mon erreur. J'essayais de définir la variable d'environnement dans "User variables" au lieu de "System Variables". Après l'avoir paramétré dans" Variables système", cela a bien fonctionné. Je suis confronté à un autre problème.

la version par défaut de java it 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 le faire pointer vers la version 5.

0
répondu ggaur 2013-04-25 11:25:26

j'ai affronté ce problème en construisant mon projet avec Jenkins. Tout d'abord , il ne pouvait pas trouver ant.bat , qui a été fixé en ajoutant le chemin à ant.chauve-souris à la variable d'environnement système path. Ant n'a pas pu trouver le répertoire jdk. Ceci a été corrigé en cliquant avec le bouton droit de la souris sur my computer > properties > advanced > environment variables et en créant une nouvelle variable d'environnement appelée JAVA_HOME et en lui assignant une valeur de C:\Program Files\Java\jdk1.7.0_21 . Ne créez pas cette variable d'environnement dans les Variables D'utilisateur. Créez-le sous Variables système seulement.

Dans les deux cas, j'ai dû redémarrer le système.

0
répondu Nav 2013-09-08 12:48:57

il est courant d'obtenir ce numéro. Je ne peux pas définir de maison Java spécifique dans mon système car j'ai 2 versions différentes de Java (Java 6 et Java 7) pour un environnement différent. Pour résoudre le problème, j'ai inclus le chemin JDK dans la configuration d'exécution lors de l'ouverture de la compilation.fichier xml. De cette façon, 2 fichiers de construction différents utilisent 2 versions différentes de Java pour construire. 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
répondu user1588737 2013-12-17 21:07:05

POUR INFO, J'utilise Windows 7 et j'ai dû redémarrer Windows pour que le nouveau paramètre JAVA_HOME prenne effet.

0
répondu user3113079 2013-12-17 22:09:16

avait 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 l'instruction JDK path seule le ferait mais je suis trop paresseux pour comprendre que la solution ci-dessus est à l'épreuve des balles. :- )

utilisant également des fenêtres 7

0
répondu macw 2014-01-06 16:30:34

travail Rapide autour de la même est

Copy C:\Program fichiers\Java\jdk1.6.0_14\lib\tools.jar to C:\Program fichiers\Java\jre6\lib\

cette exception est à venir parce que JAVA_HOME est défini comme C:\Program fichiers\Java\jre6 et Ant n'est pas capable de trouver des outils.jar.

0
répondu minhas23 2014-06-20 19:56:47

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

  1. allez à "exécuter" - >outils externes -> Configuration des outils externes

  2. - > sélectionner "JRE" Ensuite, à partir de la liste déroulante, sélectionnez le JDK disponible . ex. jdk1.8.0_25

0
répondu user3391421 2016-01-14 18:59:41

si vous devez exécuter ant dans eclipse avec Inbuilt eclipse jdk ajouter la ligne ci-dessous dans build.xml

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
0
répondu Andrew TR 2016-03-24 17:05:58