каталог java_home не является правильным, хотя он существует в моем файле окружения

5

Я использую Java jdk с Maven, и у меня есть следующая / etc / environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

# Maven Settings
export JAVA_HOME=/usr/local/jdk1.6.25/
export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

/usr/local/jdk1.6.25 существует, но когда я запускаю mvn -version, я получаю ...

Warning: JAVA_HOME environment variable is not set.
Apache Maven 3.0.3 (r1075438; 2011-02-28 17:31:09+0000)
Maven home: /usr/local/apache-maven/apache-maven-3.0.3
Java version: 1.6.0_23, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.0.0-14-generic", arch: "i386", family: "unix"

Кто-нибудь знает, почему это не думает, что мой каталог java_home верен, даже если он существует в моем файле окружения?

    
задан david99world 28.12.2011 в 15:54
источник

1 ответ

7

Несколько идей ... Во-первых, просто для переформатирования для удобочитаемости, это ваш PATH

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Это ваши env vars:

export JAVA_HOME=/usr/local/jdk1.6.25/
export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

Обратите внимание, что «java» (программа) находится в $JAVA_HOME/bin , а не $JAVA_HOME . Это вызовет небольшую путаницу, когда в PATH оболочки будет обнаружена другая «java». Например ...

$ type java
java is /usr/bin/java

Так что просто измените свой PATH:

$ export PATH=$JAVA_HOME/bin:$PATH
$ type java
... should be $JAVA_HOME/bin/java ...

Но я не думаю, что это проблема. Из панели запуска оболочки mvn,

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

Это означало бы, что var действительно не задан, а не просто неправильно. Возможно, это ключевой намек:

  

[my java_home ...], хотя он существует в моем файле окружения?

Возможно, вы добавили / изменили JAVA_HOME на .bashrc или .profile , а затем в той же оболочке попытались запустить mvn -v ?? Если это так, эти значения не будут подняты до тех пор, пока вы не отправите файл (например, . ~/.bashrc ) или не создадите новую оболочку входа ( bash -l ), чтобы эти env var были установлены (или сброшены).

(Также ... это всего лишь вопрос мнения, но в вашем PATH я оставил бы стандартные /usr/bin/usr/sbin и /bin ) перед любыми /usr/local/bin или /opt/bin (и т. д.), чтобы избежать использования каких-либо локальных программ rouge над стандартными программами ... использование чего-то вроде alternatives было бы предпочтительнее переопределять стандартные версии стандартных приложений.)

    
ответ дан michael 12.01.2012 в 10:34
источник