2013-03-28 6 views
0

У меня есть проект платформы платформы NetBeans с Maven2. Когда я пытаюсь создать новый модуль платформы я получаю эту странную ошибку:Проект Netbeans Maven: JAVA_HOME не определен правильно

cd ~/src; JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java ~/netbeans-7.3/java/maven/bin/mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes... 
Error: JAVA_HOME is not defined correctly. 
    We cannot execute /usr/lib/jvm/jdk1.7.0/bin/java/bin/java 

В ~/.bashrc У меня есть определение JAVA_HOME:

export JAVA_HOME="/usr/lib/jvm/jdk1.7.0" 
export JDK_HOME="/usr/lib/jvm/jdk1.7.0" 

Там нет слэша в конце концов, однако специалист добавляет /bin/java/bin/java к этому дорожка. Я могу создать уже существующий модуль с Maven без проблем, просто при создании нового он терпит неудачу. Где Maven получает это JAVA_HOME?

EDIT: настройки Maven:

$ mvn -version 
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) 
Java version: 1.7.0_17 
Java home: /usr/lib/jvm/java-7-oracle/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "3.2.0-39-generic" arch: "amd64" Family: "unix" 
+0

вы используете 'Open JDK' или' Oracle/Sun JDK'? –

+0

Это Oracle Java, но в данном случае это не имеет значения. Да, проблема в NetBeans, я думаю ... – Tombart

ответ

0

проблема была с неверным определением JAVA_HOME в ~/.bash_profile

интеграции NetBeans из мавена предпочитает:

System.getenv("JAVA_HOME") 

перед:

System.getProperty("java.home") 
+0

Итак, каково правильное значение для JAVA_HOME? Я сталкиваюсь с той же проблемой. На самом деле я установил JAVA_HOME = "/ opt/java/jdk1.7.0_75". Когда я запускаю 'which java' его значение '/ opt/java/jdk1.7.0_75/bin/java'. Maven работает хорошо для всего моего проекта, кроме случаев, когда я пытаюсь запустить maven для плагина для svn. – irvana

+0

Я думаю, что если 'JAVA_HOME' не установлен, он может быть автоопределен. Или попробуйте использовать команду maven: 'mvn -version | grep "Java home" ' – Tombart

1

Вы переосмысление JAVA_HOME в командной строке, чтобы указать на /usr/lib/jvm/jdk1.7.0/bin/java, что неправильно:

cd ~/src; JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java ... 

Удалите JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java из команды line:

cd ~/src; ~/netbeans-7.3/java/maven/bin/mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes... 
+0

Да, я знаю. Эта команда генерируется IDE. Я предположил, что он должен идти по пути от системной переменной '$ JAVA_HOME', но, очевидно, это неверно. Он должен быть отменен некоторыми другими настройками. Может быть, какая-то конфигурация Maven? – Tombart

+1

@Tombart, вы говорите, что он генерируется идеей, поэтому он не связан с конфигурациями maven или maven.Проблема заключается либо в netbeans, либо в netbeans maven интеграции – eis

+0

да, похоже, ошибка NetBeans. Он использует разные пути для создания нового проекта и для компиляции существующего – Tombart

0

NetBeans принимает JAVA_HOME из определения платформы Java в среде IDE (см инструментов/Java платформы)

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

Все платформы должны быть определены в диалоговом окне «Инструменты/Java-платформы», и проверки правильности находятся на месте, чтобы выбрать нужную папку.

Возможно, что-то изменилось вовремя для вас, и определение там неверно?

+0

Возможно, вы правы, я недавно установил java7 из хранилища apt. Но платформа использует '/ usr/lib/jvm/java-7-oracle/jre/bin/java', который также является версией по умолчанию. В некоторых случаях также используется с интеграцией maven ... что-то странно :( – Tombart

+0

Хорошо, я дважды проверил код, вот как устанавливается JAVA_HOME. Сначала мы проверяем свойство Env.JAVA_HOME в вашем действии, если определено, что мы используем как есть. В противном случае мы проверяем JavaPlatforms из IDE и сопоставляем путь инструмента «java» платформы к известным папкам установки. Не знаете, как они соответствуют установленным пакетам ОС (linux), может быть, они этого не делают. , мы проверяем переменные среды и используем JAVA_HOME оттуда. Если не определено, то последней точкой является системная переменная java.home. – mkleint

+0

Где находится 'Env.JAVA_HOME'? В' netbeans.conf' У меня есть это: ' netbeans_jdkhome = "/ usr/lib/jvm/java-7-oracle" ' – Tombart

0

для Linux найти МВН executalble файл в Java Netbeans игровая/maven/bin и добавить

from="/bin/bin/java" 
to="/bin/java" 
JAVACMD="${JAVACMD/$from/$to}" 

до линии

if [ ! -x "$JAVACMD" ] ; then 
    echo "Error: JAVA_HOME is not defined correctly." 

ура

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