I wanted to change the jdk version used by Maven from 1.8 to 11 using alternatives
on fedora.
$ mvn -version
Apache Maven 3.5.4 (Red Hat 3.5.4-4)
Maven home: /usr/share/maven
Java version: 1.8.0_232, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.fc29.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.16-300.fc29.x86_64", arch: "amd64", family: "unix"
I have 3 installed versions of java :
$ sudo alternatives --config java
[sudo] password for axione:
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.5.10-0.fc29.x86_64/bin/java)
2 java-latest-openjdk.x86_64 (/usr/lib/jvm/java-13-openjdk-13.0.1.9-2.rolling.fc29.x86_64/bin/java)
*+ 3 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.fc29.x86_64/jre/bin/java)
The solution is in two parts :
Setting the jdk using alternatives by setting java_sdk_openjdk
:
$ sudo alternatives --config java_sdk_openjdk
In the ~/.mavenrc
file setting the JAVA_HOME
value by adding this line:
export JAVA_HOME=/usr/lib/jvm/java-openjdk
Explanation:
The following command isn't the good one since it will change the java (JRE) version and not java (JDK) version.
$ sudo alternatives --config java
/usr/lib/jvm/java-openjdk
will point to the new jdk every time we change java_sdk_openjdk
using alternatives
.