Подтвердить что ты не робот

Ant невозможно найти javac, JAVA_HOME не будет установлен на Ubuntu

У меня есть проект 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. Что происходит не так? Я занимаюсь этим слишком много часов.

4b9b3361

Ответ 1

Вы установили JDK?

При установке Ubuntu только JRE устанавливается как часть пакетов по умолчанию. К сожалению, управление пакетами Ubuntu называет каталог, как если бы JRE был установлен вместе с JDK. Каталог называется java-6-openjdk, хотя JDK не присутствует.

Выполните следующие действия:

sudo apt-get install openjdk-6-jdk

Он установит JDK в том же каталоге.

Ответ 2

--- Обновлен после того, как вы заметили небольшой результат в вашем файле ---

У вас установлено 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, тогда вышеупомянутая модификация переменной пути будет работать без необходимости ее изменения.

Ответ 3

Как сказал Эдвин Бак, проверьте свои $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

Ответ 4

Изменение 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, что не старый).