2012-06-28 2 views
29

Я пытаюсь следовать учебному пособию о том, как использовать ant для создания и запуска вашего приложения. Я выполнил все шаги и создал файл сборки, но когда я пытаюсь запустить ant, это дает мне эту ошибку.JAVA_HOME не указывает на JDK

BUILD FAILED /home/bilal/tmp/ant/build.xml:19: 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"

Любые идеи, как решить эту проблему?

ответ

24

Сделать JAVA_HOME переменную точку установки в JDK, а не JRE .

Вы ссылаетесь на среду выполнения, а не на комплект разработчика - он не может найти компилятор, потому что его нет.

От линии вы публикуемую, в котором говорится, у вас есть под открытым JDK вы можете просто удалить JRE на конце:

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/' 
+0

и как найти, где находится установка jdk? – comatose

+0

где вы его установили? – NimChimpsky

+0

:) ну, это было предварительно установлено в моем mac, есть ли команда, какая java или что-то в этом роде, которая могла бы сказать мне, где она установлена? – comatose

3

Похоже, что вы в настоящее время указывает JAVA_HOME на /usr/lib/jvm/java-6-openjdk/jre, который, как представляется, быть не JRE JDK. Попробуйте установить JAVA_HOME на /usr/lib/jvm/java-6-openjdk.

JRE не содержит компилятор Java, в нем содержится только JDK (Java Developer Kit).

1

JAVA_HOME, который у вас выше, указывает только на JRE, который не содержит компилятор. Установите JAVA_HOME на

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

... и повторите попытку.

+0

Другие люди уже дали этот ответ, вы просто повторяете другие. – Ali

12

Это по дизайну. Вы не можете использовать ant (который является свойством java.lang.System) взаимозаменяемо с тем, как JAVA_HOME установлен в среде ОС. Вероятно, вы пытаетесь утвердить местоположение компилятора Java с принципиально иным значением из другого уровня свойств - т.е. java.home (из внутренних элементов Java Ant) указывает на среду выполнения Java Runtime Environment на <any_installed_java_pointed_to_by_ant>/jre, а JDK_HOME (из среды ОС) обычно устанавливается в <DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>.

Смотрите мой вопрос и ответ здесь для получения более подробной информации: Where does Ant set its 'java.home' (and is it wrong) and is it supposed to append '/jre'?

Решения для доступа к свойству среды системы в пределах Ant с помощью ${env.JAVA_HOME}. Укажите, какой java использовать явно в Задаче Javac, установив свойство executable пути javac и свойство fork на yes (см. Ant's Javac Task Documentation). Таким образом, неважно, в какой среде Java Ant запущен внутри, компилятор всегда четко определен!

+2

это должно быть отмечено как решение – quinestor

+3

Я бы не сказал, что это решение. Он объясняет, что происходит, а не как это исправить. У меня такая же проблема, как и Ant, а не я, это похоже на использование java.home и JAVA_HOME взаимозаменяемо. Моя JAVA_HOME верна, но Ant, кажется, добавляет/jre, а затем жалуется на это! –

+0

@Dave Rager: Ant функционирует * как задумано *. – ingyhere

24

Вы установили Java ...

apt-get install default-jre 

Но не JDK ...

apt-get install default-jdk 
+0

@ingyhere Установка 'default-jdk', как было предложено здесь, устранила проблему для меня. –

+0

@Mark Stosberg Во-первых, я удалил свой предыдущий комментарий, потому что он должен был отслеживать комментарии к другому ответу. Для потомков также контекст не ясен на этой странице. Итак, идея состоит в том, что Ant должен работать в JRE, независимо от того. Однако для компиляции приложения требуется JDK. Задача Ant Javac должна (или, по крайней мере, использоваться) по умолчанию находить компилятор Java (javac), обнюхивая внутренние свойства. Итак, если Javac «исполняемый» атрибут не указан явно, он может найти неправильную вещь. Наличие JDK является обязательным условием, и, конечно же, это не проблема. – ingyhere

1

У меня была аналогичная проблема, и оказалось, что вопрос, имеющий обе версии 6 & 7 из OpenJDK.Ответ приходит от г-старший на Ubuntu форумах (http://ubuntuforums.org/showthread.php?t=1977619) --- просто деинсталлировать версии 6:

sudo apt-get remove openjdk-6-*

убедитесь, что JAVA_HOME и CLASSPATH не установлен ни к чему, так что это на самом деле не проблема ,

1

Я использую Windows 7 и боролся с той же проблемой. Я исправил это, изменив переменные среды.

изменить переменные окружения click here

Я добавил «;% JAVA_HOME%/БИН» до конца путей переменных и добавлен новый «JAVA_HOME» переменный и установите его значение в место моего JDK «C : \ Program Files \ Java \ jdk1.8.0_11 ". После этого я перезапустил свою командную строку Node.js, и она сработала.

Обратите внимание, что каталог JDK может отличаться от моего. Кроме того, в зависимости от вашей установки вам может потребоваться перезагрузить компьютер после установки переменных среды.

0

для CentOS ням -y установить Java-1.7.0-OpenJDK-devel.x86_64

и обновляют JAVA_HOME =/USR/Библиотека/JVM/Java-1.7.0-openjdk.x86-64

+1

Попробуйте форматировать свою команду, чтобы ее было легче читать. – DanM7

0

Опытная эта проблема при попытке запустить эмулятор android с Meteor 1.0 на элементарной ОС Luna (на основе источников Ubuntu 12.04 LTS).

openjdk-6-jdk был установлен, а также jre. В конце концов, не ожидая какого-либо успеха, я попробовал:

sudo apt-get remove openjdk-6-* 

это привело полностью ожидаемых ошибок, поэтому я последовал с

sudo apt-get install openjdk-6-jdk 

и все работали. Идите фигуру.

4

Я знаю, что этот вопрос старый, но принятый ответ больше не работает, и поскольку это первая ссылка на поиск Google, я расскажу, как я решил эту проблему.

для затмения с помощью убунту:

перейти к Window-> Настройки-> Ant-> runtime-> Выбрать Ant_Home_Entries и нажмите добавить внешние банки затем найти в файловом проводнике, где ваш JDK находится (по умолчанию находится в/USR/lib/jvm /), а в папке lib вашего jdk вы найдете tool.jar. выберите этот вариант и нажмите «Применить».

попытайтесь построить свой проект, и все должно работать!

примечание: я долгое время не использовал муравьев, но нуждался в нем для генератора рабочей нагрузки ycsb couchbase (http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup), если кто-либо застрял на этом.

0

В Ubuntu 14.04, я нашел две части для решения задачи:

  1. Удалить /jre из переменной окружения. Для меня: export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
  2. Установите JDK, а также JRE: sudo apt-get install default-jdk
1

Я просто скопированные инструменты.jar из папки JDK \ lib в папку JRE \ lib. С тех пор он работал как чемпион.

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). - [Из обзора] (/ review/low-quality-posts/10687279) – mjp66

+0

@ mjp66, вы попробовали. Он не ответил на вопрос? Как так? Мы не нуждаемся в разъяснениях не только от автора, который, как мне кажется, может объяснить любой, кто столкнулся с проблемой. А что такое хорошая репутация ??? –

+0

Это лучший ответ! Он работал и не требовал команд, которые я понятия не имел, где я должен писать – Maude

0

После того, как вы обновите путь JAVA_HOME, как указано в ответе, вы должны сделать это:

$source ~/.bashrc 

Это освежит Bashrc показать обновленный путь в $ ПАПКА_УСТАНОВКИ_JAVA, когда вы еще раз проверить.

0

Execute:

$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 

и установить среду операционной системы:

vi /etc/environment 

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

  1. Press я
  2. Паста

    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 
    
  3. Нажмите ESC

  4. Пресса: WQ
1

Я встретил этот вопрос в RHEL, мой "JAVA_HOME =/USR/Библиотека/JVM/Java-1.8.0-OpenJDK" (который является символическая ссылка), и ant жалуется.

мое решение этого заключается в том, чтобы использовать путь реального JDK в JAVA_HOME, как:

JAVA_HOME =/USR/Библиотека/JVM/Java-1.8.0-OpenJDK-1.8.0.161-0.b14.el7_4 .x86_64

Это работает для меня.

Смежные вопросы