I am trying to build a maven project on centOS 8. I want maven to use Java version 15. When I run mvn package
I get the following error:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
(default-compile) on project systembrett-backend: Fatal error compiling: invalid target release: 15 -> [Help 1]
So I suspect that maven is using the wrong Java version, because when i do mvn package -X
for debug logs it start with:
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 1.8.0_275, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-240.1.1.el8_3.x86_64", arch: "amd64", family: "unix"
so it looks like, maven is using Java version 1.8.
But mvn -version
says:
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 15.0.2, vendor: AdoptOpenJDK, runtime: /opt/jdk-15.0.2+7
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-240.1.1.el8_3.x86_64", arch: "amd64", family: "unix"
JAVA_HOME
is /opt/jdk-15.0.2+7
and PATH
is /opt/jdk-15.0.2+7/bin:/home/username/.local/bin:/home/username/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
.
I thought maven is choosing the java version by checking JAVA_HOME
, but apparently it is using an other version for the build. Does anyone know how to tell maven the correct version?
Thanks!
2
Answers
Following is a list of steps I use to troubleshoot this kind of issues:
alternatives
to ensure proper default Java environment is used. Similar to:Try also for
javac
as it may not be configured the same way:maven
instance,JAVA_HOME
should be enough.Your output of
mvn -version
testifies that you have configured it correctly. Remove your Java from yourPATH
to ensureJAVA_HOME
andmvn
will find the correct one.pom.xml
can also configure the required compiler, similar to:You encounter this usually when different JRE vs JDK are used ( more: maven installation has runtime as JRE instead of JDK )
I had the same issue on RHEL 9.1. The solution was to look at
/etc/java/maven.conf
and set the correctJAVA_HOME
here in this file.In other words, you can add just the single line similar to this to that
maven.conf
file:and you should be good.