web-dev-qa-db-fra.com

JAVA_HOME ne pointe pas vers le JDK

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?

29
comatose

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/'
27
NimChimpsky

Vous avez installé Java ...

apt-get install default-jre

Mais pas leJDK...

apt-get install default-jdk
24
user2708687

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é!

13
ingyhere

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. 

4
dtrihinas

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.

3
Michael

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. 

2
user2941971

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.

1

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. 

1
user2330392

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.

1
Jaco Van Niekerk

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.

1
h.chen

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

0
Sid_R

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

0
uday

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:

  1. Appuyez sur i 
  2. Coller

    Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
    
  3. Appuyez sur esc

  4. Presse: wq
0
Gopalji Varshneya

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. 

0
user3270763

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.

0
keito

Sur Ubuntu 14.04, j'ai trouvé deux parties pour résoudre le problème:

  1. Supprimez /jre de la variable d'environnement. Pour moi: export Java_HOME=/usr/lib/jvm/Java-7-openjdk-AMD64/
  2. Installez le JDK ainsi que le JRE: Sudo apt-get install default-jdk
0
Mark Stosberg