web-dev-qa-db-fra.com

Ant incapable de trouver javac, Java_HOME ne sera pas configuré sur Ubuntu

J'ai un Android projet appelé Hello sur mon serveur Ubuntu 10.04 i386 (sans tête). Il contient toutes les choses qu'un dossier de projet Android Android devrait avoir. J'ai d'abord construit le projet dans bash dans le dossier Project en utilisant cette synaxe:

./Android create project --target 5 --name HelloCompile --path ../../Projects/Hello --activity HelloActivity --package com.code.Hello

alors j'essaye de construire le .apk avec ant comme ceci:

ant debug

Je reçois cette erreur:

BUILD FAILED
/home/myusername/www/sdk/tools/ant/main_rules.xml:384: 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"

ce qui est très déroutant pour moi car juste avant de lancer ant debug Je cours:

export Java_HOME=/usr/lib/jvm/Java-6-openjdk

que je connais fonctionne parce que printenv dans bash Shell retourne:

Java_HOME=/usr/lib/jvm/Java-6-openjdk

pour aggraver cela, en ajoutant cette ligne à mon fichier/etc/environment

export Java_HOME=/usr/lib/jvm/Java-6-openjdk

ne résout pas non plus le problème - j'obtiens la même erreur. Rien de ce que je fais ne change le fait qu'Ubunut pense toujours /usr/lib/jvm/Java-6-openjdk/jre est le Java_HOME. Qu'est-ce qui ne va pas? Je suis là depuis trop d'heures.

44
lollercoaster

Avez-vous installé le JDK?

Lorsque vous installez Ubuntu, seul le JRE est installé dans le cadre des packages par défaut. Malheureusement, la gestion des packages d'Ubuntu nomme le répertoire comme si le JRE était installé avec le JDK. Le répertoire est nommé Java-6-openjdk même si le JDK n'est pas présent.

Procédez comme suit:

Sudo apt-get install openjdk-6-jdk

Il installera le JDK dans ce même répertoire.

77
Brian Roach

--- Mis à jour après avoir remarqué un petit élément dans votre sortie ---

Vous avez votre Java_HOME défini à l'emplacement correct pour un Java Runtime Environment, ce qui vous permettra sans surprise d'exécuter Java, mais pas les développer .

Raccourcissez votre Java_HOME à /usr/lib/jvm/Java-6-openjdk (notez la suppression du dernier jre). Après cela, votre code de détection des wrappers/compilateurs Ant ne sera pas confondu, car il pointera vers la maison de votre Java Development Environment au lieu de l'incorporation, liée Java Runtime Environment =.

L'embarqué Java Runtime Environment est fourni pour vous assurer que vous pouvez tester uniquement avec le noyau (outils de compilation non inclus) Java offres).

--- Le message d'origine suit ---

Trouver la commande javac n'a pas grand-chose à voir avec Java_HOME au-delà de cela javac se trouve généralement dans un sous-répertoire sous Java_HOME

Ce que vous devez faire est de modifier votre variable d'environnement PATH pour inclure le répertoire dans lequel se trouvent les exécutables Java. Typiquement, cela se fait comme ceci

PATH=${PATH}:${Java_HOME}/bin
export PATH

mais cela peut être fait légèrement différemment selon votre configuration. Si tu fais

ls ${Java_HOME}/bin

et vous voyez un exécutable javac, alors la modification ci-dessus de la variable path fonctionnera sans avoir besoin de le changer.

10
Edwin Buck

Comme l'a dit Edwin Buck, vérifiez votre $ PATH pour les liens logiciels vers/etc/alternatives/Java dans le répertoire/usr/bin /. Ils sont lus avant votre variable Java_HOME ajoutée.

C'était mon problème:

ls -al /usr/bin/j* 
lrwxrwxrwx 1 root root    22 2012-05-07 13:26 /usr/bin/Java -> /etc/alternatives/Java
lrwxrwxrwx 1 root root    25 2011-05-12 19:45 /usr/bin/Java_vm -> /etc/alternatives/Java_vm
lrwxrwxrwx 1 root root    24 2011-05-01 05:22 /usr/bin/javaws -> /etc/alternatives/javaws
lrwxrwxrwx 1 root root    26 2011-05-12 19:45 /usr/bin/jcontrol -> /etc/alternatives/jcontrol
lrwxrwxrwx 1 root root    23 2011-04-26 02:24 /usr/bin/jexec -> /etc/alternatives/jexec
2
garec

La modification de Java_HOME et PATH est insuffisante.

Après avoir installé le Java version JDK que vous souhaitez (kit de développement Java, pas seulement Java environnement d'exécution JRE), changez votre version préférée avec Sudo update-alternatives --config Java. Si vous êtes sur Ubuntu, vous avez probablement installé 1.6 et 1.7, et 1.8 est disponible dans les PPA (bien que je ne trouve pas de PPA de 1.8 qui ne soit pas vieux).

0
brandoncurtis