У меня есть проект Android под названием Hello на моем сервере Ubuntu 10.04 i386 (безголовый). Он содержит все, что должна иметь папка проекта Android. Сначала я создаю проект в bash, а в папке Project - используя этот синтаксис:
./android create project --target 5 --name HelloCompile --path ../../Projects/Hello --activity HelloActivity --package com.code.Hello
то я пытаюсь построить .apk с ant следующим образом:
ant debug
Я получаю эту ошибку:
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"
что очень сбивает меня с толку, потому что как раз перед тем, как я запустил ant debug
, я запустил:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
который я знаю, работает, потому что printenv
в bash shell возвращает:
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
чтобы добавить это значение в мой файл /etc/environment
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
тоже не исправляет проблему - я получаю ту же ошибку. Ничто из того, что я делаю, не меняет тот факт, что Ubunut по-прежнему считает, что /usr/lib/jvm/java-6-openjdk/jre
- JAVA_HOME. Что происходит не так? Я занимаюсь этим слишком много часов.
Вы установили JDK?
При установке Ubuntu только JRE устанавливается как часть пакетов по умолчанию. К сожалению, управление пакетами Ubuntu называет каталог, как если бы JRE был установлен вместе с JDK. Каталог называется java-6-openjdk
, хотя JDK не присутствует.
Выполните следующие действия:
sudo apt-get install openjdk-6-jdk
Он установит JDK в том же каталоге.
--- Обновлен после того, как вы заметили небольшой результат в вашем файле ---
У вас установлено JAVA_HOME
в правильном месте для Java Runtime Environment, что, без сомнения, позволит вам запускать Java-программы, но не разрабатывать их.
Сократите JAVA_HOME
до /usr/lib/jvm/java-6-openjdk
(обратите внимание на удаление конечного jre
). После этого ваш код обнаружения оболочки/компилятора Ant не запутается, так как он будет указывать на дом вашей Java Development Environment вместо встроенной связанной среды Java Runtime Environment /STRONG > .
Вложенная Java Runtime Environment предоставляется, чтобы убедиться, что вы можете протестировать только ядро (инструменты компилятора не включены) Java-предложения.
--- Исходный пост следует ---
Поиск команды javac
имеет мало общего с JAVA_HOME
, кроме того, что javac
обычно находится в подкаталоге в JAVA_HOME
Что вам нужно сделать, так это изменить переменную окружения PATH
, чтобы включить каталог, в котором находятся исполняемые файлы Java. Обычно это делается так:
PATH=${PATH}:${JAVA_HOME}/bin
export PATH
но это может быть сделано несколько иначе, в зависимости от вашей настройки. Если вы делаете
ls ${JAVA_HOME}/bin
и вы видите исполняемый файл javac, тогда вышеупомянутая модификация переменной пути будет работать без необходимости ее изменения.
/etc/profile
, затем вышел из SSH, затем вошел в систему и снова попытался запустить ant debug
. точно такая же ошибка.
echo $path
что получится? Кроме того, что происходит для which javac
?
Как сказал Эдвин Бак, проверьте свои $PATH на softlinks на /etc/alternatives/java в каталоге /usr/bin/. Они считываются перед вашей добавленной переменной JAVA_HOME.
Это была моя проблема:
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
Изменение JAVA_HOME и PATH недостаточно.
После установки Java JDK-версии, которую вы хотите (Java DEVELOPMENT Kit, а не только Java Runtime Environment JRE), измените предпочтительную версию с помощью sudo update-alternatives --config java
. Если вы на Ubuntu, у вас, вероятно, установлены версии 1.6 и 1.7, а 1.8 доступен в PPA (хотя я не могу найти PPA 1,8, что не старый).