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.
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.
--- 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.
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
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).