Eu tive o mesmo problema em uma máquina Linux. Fiquei bastante frustrado no começo, porque instalei o JDK e o JRE. Estou usando as versões 1.6, 1.7 e 1.8 simultaneamente e brinquei muito com as alternativas para definir tudo corretamente.
O problema era bastante estúpido de resolver, mas contra-intuitivo. Enquanto eu estava usando o JDK correto, prestei atenção no caminho das ferramentas que o maven denunciou - esperava que fosse
$JAVA_HOME\..\lib\tools.jar
A $JAVA_HOME
variável apontou diretamente para minha jdk
pasta ( /usr/local/java
que também era a $PATH
entrada correta e o link simbólico alternativo). Na verdade, ele procura a lib
pasta fora do diretório java, porque:
$JAVA_HOME\..\lib\tools.jar
resolverá
/usr/local/lib/tools.jar
e esse não é um local válido.
Para resolver isso, a $JAVA_HOME
variável deve apontar para esse local /usr/local/java/jre
(assumindo que o caminho do JDK seja /usr/local/java
) - na verdade, existe uma jre
pasta dentro do diretório de instalação do JDK, que acompanha cada JDK. Essa nova configuração fará com que o maven veja o diretório JRE, que faz parte do JDK:
$JAVA_HOME\..\lib\tools
que agora resolve
/usr/local/java/jre/../lib/tools.jar
e finalmente para
/usr/local/java/lib/tools.jar
que é onde tools.jar
realmente reside.
Portanto, mesmo que você esteja usando o JDK em vez do JRE, o $ JAVA_HOME deve apontar para o JRE. Lembre-se de que a alternativa do SO ainda deve se referir ao JDK.