J'essaie de suivre un tutoriel sur la façon d'utiliser ant pour construire et exécuter votre application. J'ai suivi toutes les étapes et créé le fichier de construction, mais lorsque j'essaie de l'exécuter, il me donne cette erreur.
ÉCHEC DE CONSTRUCTION /home/bilal/tmp/ant/build.xml:19: Impossible de trouver un compilateur javac; com.Sun.tools.javac.Main n'est pas sur le chemin de classe . Peut-être que Java_HOME ne pointe pas vers le JDK . Il est actuellement défini sur "/ usr/lib/jvm/Java-6-openjdk/jre"
Des idées comment résoudre ce problème?
Faites en sorte que la variable Java_HOME pointe sur un fichier jdk installation et non jre .
Vous faites référence à l'environnement d'exécution, pas au kit de développement - le compilateur ne peut pas être trouvé car il n'y est pas.
Dans la ligne que vous avez postée, qui indique que vous avez open-jdk, vous pouvez simplement supprimer le jre à la fin:
export Java_HOME='/usr/lib/jvm/Java-6-openjdk/'
Vous avez installé Java ...
apt-get install default-jre
Mais pas leJDK...
apt-get install default-jdk
C'est par conception. Vous ne pouvez pas utiliser le Java.home
de ant (propriété Java.lang.System
) de manière interchangeable avec la manière dont Java_HOME
est défini dans l'environnement du système d'exploitation. Vous essayez probablement d'affirmer l'emplacement du compilateur Java avec une valeur fondamentalement différente de celle d'une couche de propriétés différente - c.-à-d. Java.home (des éléments internes de Java de Ant) pointe vers l'environnement d'exécution Java à <any_installed_Java_pointed_to_by_ant>/jre
tandis que JDK_HOME (de l'environnement du système d'exploitation) est généralement défini sur <DOWNLOADED_AND_INSTALLED_Java_DEVELOPMENT_KIT>
.
Voir ma question et ma réponse ici pour plus de détails: Où Ant définit-t-il son 'Java.home' (et est-il faux) et est-il supposé ajouter '/ jre'?
La solution consiste à accéder à la propriété d'environnement système dans Ant à l'aide de ${env.Java_HOME}
. Spécifiez le Java à utiliser explicitement dans la tâche Javac en définissant la propriété executable
sur le chemin javac et la propriété fork
sur yes (voir Documentation de la tâche Javac de Ant ). Ainsi, peu importe l'environnement Java dans lequel Ant s'exécute, le compilateur est toujours clairement spécifié!
Je sais que cette question est ancienne, mais la réponse acceptée ne fonctionne plus et, comme il s’agit du premier lien dans la recherche Google, je vais vous dire comment j'ai résolu ce problème.
pour Eclipse sous Ubuntu:
allez dans Window-> Preferences-> Ant-> Runtime-> Sélectionnez Ant_Home_Entries et cliquez sur add jar externes, puis trouvez dans l'explorateur de fichiers où se trouve votre jdk (par défaut dans/usr/lib/jvm /) jdk vous trouverez le fichier tool.jar. sélectionnez celui-ci et cliquez sur Appliquer.
essayez de construire votre projet et tout devrait marcher!
remarque: je n'avais pas utilisé ant depuis longtemps, mais j'en avais besoin pour ycsb couchbase ( http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup ) si quelqu'un le souhaite/était coincé là-dessus.
Il semble que vous dirigiez actuellement Java_HOME vers /usr/lib/jvm/Java-6-openjdk/jre
, qui semble être un JRE et non un JDK. Essayez de définir Java_HOME sur /usr/lib/jvm/Java-6-openjdk
.
JRE ne contient pas le compilateur Java, seul le JDK (Java Developer Kit) le contient.
J'utilise Windows 7 et ai lutté avec le même problème. Je l'ai corrigé en changeant mes variables d'environnement.
Pour changer vos variables d'environnement cliquez ici
J'ai ajouté ";% Java_HOME%/bin" à la variable de fin de chemins, puis une nouvelle variable "Java_HOME" et ai défini sa valeur sur l'emplacement de mon JDK "C:\Program Files\Java\jdk1.8.0_11". Après cela, j'ai redémarré ma commande Node.js Prompt et cela a fonctionné.
Veuillez noter que votre répertoire JDK peut être différent du mien. En fonction de votre configuration, vous devrez peut-être également redémarrer votre ordinateur après avoir défini les variables d’environnement.
Je viens de copier le fichier tools.jar du dossier JDK\lib vers le dossier JRE\lib. Depuis lors, cela a fonctionné comme un champion.
J'ai eu un problème similaire et il s'est avéré que le problème était d'avoir les deux versions 6 et 7 d'OpenJDK. La réponse provient de r-senior sur les forums ubuntu ( http://ubuntuforums.org/showthread.php?t=1977619 ) --- il suffit de désinstaller la version 6:
Sudo apt-get remove openjdk-6-*
assurez-vous que Java_HOME et CLASSPATH ne sont pas paramétrés sur quoi que ce soit car ce n'est pas réellement le problème.
Java_HOME que vous avez ci-dessus pointe uniquement sur le JRE, qui ne contient pas le compilateur. Définissez votre Java_HOME sur
/usr/lib/jvm/Java-6-openjdk
...et essayez à nouveau.
J'ai rencontré ce problème dans rhel, mon "Java_HOME =/usr/lib/jvm/Java-1.8.0-openjdk" (qui est un lien symbolique) et ant se plaint.
Ma solution pour cela consiste à utiliser le vrai chemin jdk dans Java_HOME, comme:
Java_HOME =/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
Ça marche pour moi.
Sous Jenkins, il se plaint comme:
/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/ ne ressemble pas à un répertoire JDK
Raison: Impossible de créer un kit de développement pour JDK.
Solution:
Assurez-vous également d'installer openjdk-devel package avec votre version de JDK-1.8 * et de réexporter avec: # source ~/.bash_profile
pour centos yum -y installer Java-1.7.0-openjdk-devel.x86_64
et mettez à jour Java_HOME =/usr/lib/jvm/Java-1.7.0-openjdk.x86-64
Exécuter:
$ export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
et définir l'environnement du système d'exploitation:
vi /etc/environment
Suivez ensuite ces étapes:
Coller
Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
Appuyez sur esc
Une fois que vous avez mis à jour le chemin Java_HOME comme indiqué dans la réponse, procédez comme suit:
$source ~/.bashrc
Cela actualisera bashrc le chemin mis à jour dans $ Java_HOME lors de votre prochaine vérification.
A rencontré ce problème en essayant d'exécuter l'émulateur Android avec Meteor 1.0 sur le système d'exploitation élémentaire Luna (basé sur les sources Ubuntu 12.04 LTS).
openjdk-6-jdk a été installé, ainsi que le jre. Au final, n'espérant aucun succès, j'ai essayé:
Sudo apt-get remove openjdk-6-*
cela a entraîné des erreurs totalement attendues, alors j'ai suivi avec
Sudo apt-get install openjdk-6-jdk
et les choses ont fonctionné. Allez comprendre.
Sur Ubuntu 14.04, j'ai trouvé deux parties pour résoudre le problème:
/jre
de la variable d'environnement. Pour moi: export Java_HOME=/usr/lib/jvm/Java-7-openjdk-AMD64/
Sudo apt-get install default-jdk