JAVA_HOME не определен правильно

14

Я установил Java JDK Hotspot 1.7. Когда я java -versionпечатаю, я получаю:

java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147)

Это верно.

И я попытался установить Maven, и добавил в /etc/environmentфайл:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M2=/usr/local/apache-maven/apache-maven-3.0.4/bin

Теперь, когда я набираю mvn, я получаю:

Error: JAVA_HOME is not defined correctly.   We cannot execute
”/usr/lib/jvm/jdk1.7.0”/bin/java

Однако я не ставлю "отметку для JAV_HOME var в файле среды.

Пытается убежать от

”/usr/lib/jvm/jdk1.7.0”/bin/java

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

/usr/lib/jvm/jdk1.7.0/bin/java

Когда я командую

$JAVA_HOME

Я осознаю:

bash: ”/usr/lib/jvm/jdk1.7.0”: No such file or directory

Я уверен, что путь ( /usr/lib/jvm/jdk1.7.0) является правильным.

Камолиддин
источник
Можете ли вы сделать ls -al /usr/lib/jvmи подтвердить, что «jdk1.7.0» является форматом для имени каталога? При использовании Oracle они обычно используют странные имена папок
Томас Уорд
ls /usr/lib/jvm/java-7и ls "/usr/lib/jvm/java-7"/binдать, и должен дать тот же результат для меня (который не является пустым). Последняя часть, java-7, является результатом ручной модификации - она ​​может и будет немного отличаться для вас. Убедитесь, что такая папка существует (jdk1.7.0).
пользователь неизвестен
Я получил total 44 drwxr-xr-x 3 root root 4096 Jun 28 01:57 . drwxr-xr-x 184 root root 36864 Jun 28 01:34 .. drwxr-xr-x 10 root root 4096 Jun 27 23:30 jdk1.7.0 после запуска этой ls -al /usr/lib/jvm команды
Камолиддин
Обратите внимание , что , чтобы увидеть переменные в вашей консоли, как ожидается, типа: echo $VARNAME. Если вы просто сделаете $VARNAMEэто, он выполнит то, что находится в этой переменной.
Алексис Вилке

Ответы:

15

JAVA_HOMEдолжно быть задано имя каталога , в котором содержится в binкаталог , который содержит исполняемые файлы Java (в частности, javaсам).

Предполагая, что у вас есть /usr/lib/jvm/jdk1.7.0каталог, он, вероятно, содержит jreподкаталог, который содержит binкаталог, который содержит javaи связанные исполняемые файлы.

Таким образом, вы, вероятно, должны быть настройки JAVA_HOME в /usr/lib/jvm/jdk1.7.0/jreчем /usr/lib/jvm/jdk1.7.0.

Элия ​​Каган
источник
Установка JDK, а не только JRE, обычно приводит к JDK-каталогу, содержащему каталог bin, а также к JRE-каталогу, который сам содержит каталог bin. Но JAVA_HOMEвсегда был установлен в родительский каталог, а не в jreкаталог.
пользователь неизвестен
Интересно, мне нужно установить его на JDK нет? Я собираюсь написать код на Java, компилировать, развертывать и т. Д.
Камолиддин
@Kamoliddin Если Maven использует, $JAVA_HOMEчтобы узнать, где javacнаходятся и другие двоичные файлы разработки, тогда да, вам нужно установить его в jdkкаталог, содержащий binкаталог, содержащий эти двоичные файлы.
Элия ​​Каган
Спасибо, я не знаю, это сработало после перезапуска, я думаю, что мне не нужно перезапускаться, чтобы изменения вступили в силу. Я ничего не менял. Это сработало.
Камолиддин
Не уверен, почему он вообще использует jdk1.7.0 .. /usr/lib/jvm/javaдолжно хватить и на javaи javac. Альтернативы заботятся об этом
Брайан