Ant не может найти javac, JAVA_HOME не устанавливается в Ubuntu - PullRequest
44 голосов
/ 21 апреля 2011

У меня есть проект Android под названием Hello на моем сервере Ubuntu 10.04 i386 (без головы). Он содержит все, что должна иметь папка проекта Android. Сначала я строю проект в bash, находясь в папке Project, используя этот synax:

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

тогда я пытаюсь собрать .apk с муравьем так:

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 возвращает:

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

, чтобы добавить это, добавив эту строку в мой файл / etc / environment

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

также не решает проблему - я получаю ту же ошибку. Ничто из того, что я делаю, не меняет того факта, что Убунут все еще думает, что /usr/lib/jvm/java-6-openjdk/jre - это JAVA_HOME. Что не так? Я был на этом слишком много часов.

Ответы [ 4 ]

77 голосов
/ 21 апреля 2011

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

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

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

sudo apt-get install openjdk-6-jdk

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

10 голосов
/ 21 апреля 2011

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

Вы установили JAVA_HOME в правильное местоположение для Java Runtime Environment , что без лишних хлопот позволит вам запускать программы Java , но не разрабатывать их .

Сократите свой JAVA_HOME до /usr/lib/jvm/java-6-openjdk (обратите внимание на удаление завершающего jre). После этого ваш код обнаружения оболочек / компиляторов Ant не будет запутан, поскольку он будет указывать на домашнюю среду вашей среды разработки Java вместо встроенной связанной среды выполнения Java .

Встроенная Java Runtime Environment предназначена для того, чтобы вы могли проверять только ядро ​​(не включая инструменты компилятора) предложения Java.

--- Исходный пост следует ---

Поиск команды javac не имеет ничего общего с JAVA_HOME, кроме того, javac обычно находится в подкаталоге в JAVA_HOME

Вам нужно изменить переменную окружения PATH, чтобы она включала каталог, в котором находятся исполняемые файлы Java. Обычно это делается так

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

но это может быть сделано немного по-другому в зависимости от ваших настроек. Если вы делаете

ls ${JAVA_HOME}/bin

и вы видите исполняемый файл javac, тогда приведенная выше модификация переменной пути будет работать без необходимости ее изменения.

2 голосов
/ 22 мая 2012

Как сказал Эдвин Бак, проверьте $ PATH на наличие мягких ссылок на / 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 голосов
/ 13 мая 2016

Изменение JAVA_HOME и PATH недостаточно.

После установки нужной версии Java JDK (Java DEVELOPMENT Kit, а не только JRE Java Runtime Environment) измените предпочитаемую версию с помощью sudo update-alternatives --config java. Если вы работаете в Ubuntu, у вас, вероятно, установлены 1.6 и 1.7, и 1.8 доступен в PPA (хотя я не могу найти PPA 1.8, который не старый).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...