o diretório java_home não está correto, embora exista no meu arquivo de ambiente

5

Estou usando o Java jdk com o Maven e tenho o seguinte / 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

O /usr/local/jdk1.6.25 existe, mas quando eu executo o mvn -version eu recebo ...

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"

alguém sabe por que isso não acha que meu diretório java_home está correto, mesmo que exista no meu arquivo de ambiente?

    
por david99world 28.12.2011 / 15:54

1 resposta

7

Algumas idéias ... Primeiro, apenas para reformatar a legibilidade, este é o seu PATH

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

Estas são suas variáveis de env:

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

Observe que "java" (o programa) está em $JAVA_HOME/bin , não em $JAVA_HOME . Isso causará um pouco de confusão quando um 'java' diferente for encontrado no PATH do shell. Por exemplo ...

$ type java
java is /usr/bin/java

Apenas modifique seu PATH:

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

Mas não acho que seja esse o problema. A partir do iniciador do script de shell do mvn,

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

Isto implicaria que o var realmente não está definido - não apenas configurado para um valor errado. Talvez esta seja a dica-chave:

  

[meu java_home ...] mesmo que exista no meu arquivo de ambiente?

Talvez você tenha adicionado / modificado JAVA_HOME a .bashrc ou .profile e, no mesmo shell, tentou executar mvn -v ?? Nesse caso, esses valores não serão coletados até que você crie o arquivo (por exemplo, . ~/.bashrc ) ou crie um novo shell de login ( bash -l ) para que esses env var sejam definidos (ou redefinidos).

(Também ... é apenas uma questão de opinião, mas no seu PATH , deixo o padrão /usr/bin (e /usr/sbin e /bin ) na frente de qualquer /usr/local/bin ou /opt/bin (etc), apenas para evitar que programas 'locais' de rouge tenham prioridade sobre os programas padrão ... usar algo como alternatives seria preferível para substituir as versões padrão dos aplicativos padrão.)

    
por michael 12.01.2012 / 10:34

Tags