Je veux changer le maven Java Home qui est ouvert jdk avec Sun jdk. Comment puis-je le faire ?
root@ak-EasyNote-TM98:~# mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/Java-6-openjdk-AMD64/jre
Default locale: tr_TR, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-34-generic", Arch: "AMD64", family: "unix"
Edit:
Désolé. J'ai oublié d'écrire le code ci-dessous:
root@ak-EasyNote-TM98:~$ Java -version
Java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
Le chemin par défaut de mon domicile Java est déjà Sun jdk. Mais maven Java home a pointé openjdk. Je veux le réparer uniquement pour Maven.
Si vous êtes sous Linux, définissez Java_HOME en utilisant la syntaxe export Java_HOME=<path-to-Java>
. En fait, ce n'est pas seulement pour Maven.
Je suis sous Mac et aucune des réponses ci-dessus ne m'a aidé. J'ai découvert que maven chargeait son propre Java_HOME à partir du chemin spécifié dans: ~/.mavenrc
J'ai modifié le contenu du fichier pour qu'il soit: Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Pour Linux cela ressemblera à quelque chose comme:Java_HOME=/usr/lib/jvm/Java-8-Oracle/jre
Excellente aide ci-dessus, mais si vous avez le même environnement que moi, voici comment je le fais fonctionner.
Editez ce fichier /etc/profile.d/Apache-maven.sh, par exemple, notez-le, cela affectera tout le système.
$ cat /etc/profile.d/Apache-maven.sh
MAVEN_HOME=/usr/share/Apache-maven
M2_HOME=$MAVEN_HOME
PATH=$MAVEN_HOME/bin:$PATH
# change below to the jdk you want mvn to reference.
Java_HOME=/usr/Java/jdk1.7.0_40/
export MAVEN_HOME
export M2_HOME
export PATH
export Java_HOME
Le meilleur moyen de forcer une machine virtuelle Java spécifique pour MAVEN consiste à créer un fichier système chargé par le script mvn.
Ce fichier est /etc/mavenrc
et il doit déclarer une variable d'environnement Java_HOME
pointant vers votre machine virtuelle Java.
Exemple:
export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-AMD64
Si le fichier existe, il est chargé.
Voici un extrait du script mvn
afin de comprendre:
if [-f/etc/mavenrc]; puis . /etc/mavenrc Fi si [-f "$ HOME/.mavenrc"]; puis . "$ HOME/.mavenrc" Fi
Alternativement, le même contenu peut être écrit en ~/.mavenrc
Même si vous installez le JDK Oracle, votre variable $Java_HOME
doit faire référence au chemin du JRE qui se trouve dans la racine du JDK. Vous pouvez vous référer à mon autre réponse à une question similaire pour plus de détails.
Semble être une copie de https://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-and-jre-and-set-the-system-use-only-and-only- Sun # answer-21137 en supposant que vous utilisez Ubuntu.
La clé consiste à utiliser la commande Sudo update-Java-alternatives -s Java-6-Sun
. Toutes les commandes qui s'appuient sur javac
seront affectées et pas seulement Maven.
Il suffit de définir la propriété Java_HOME env.
J'ai deux versions de Java sur mon serveur Ubuntu 14.04: Java 1.7
et Java 1.8
.
J'ai un projet que je dois construire en utilisant Java 1.8
.
Si je vérifie ma version de Java en utilisant Java -version
Je reçois
Java version "1.8.0_144"
Mais quand j'ai fait mvn -version
je reçois:
Java version: 1.7.0_79, vendor: Oracle Corporation
Java8
Je fais ça:
export Java_HOME=/usr/lib/jvm/Java-8-Oracle/jre/
Alors quand je fais mvn -version
je reçois:
Java version: 1.8.0_144, vendor: Oracle Corporation