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

46

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

Теги:
ant

4 ответа

74
Лучший ответ

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

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

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

sudo apt-get install openjdk-6-jdk

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

  • 0
    О Боже. Я не могу поверить, что пропустил это - я был уверен, что установил его ... Я понятия не имею, как JDK попал туда в первую очередь ... это действительно странно. в любом случае, спасибо за то, что понял это правильно. Я на самом деле извиняюсь - это была такая глупая ошибка
  • 6
    Это хорошо сработало для меня, мне не пришлось задавать глупый вопрос :), но получил ответ
Показать ещё 3 комментария
10

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

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

  • 0
    Хорошо, я добавил эти две строки в /etc/profile , затем вышел из SSH, затем вошел в систему и снова попытался запустить ant debug . точно такая же ошибка.
  • 1
    @ lollercoaster Я бы положил деньги, что проблема в этом. Если вы делаете echo $path что получится? Кроме того, что происходит для which javac ?
Показать ещё 6 комментариев
2

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню