Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to compile java project with maven

I'm trying to build IntelliJ Project with maven on java 16.0.1, but it can't compile my project, although IntelliJ is able to do it successfuly. Before that, I used maven to compile a java 15 project, but I decided to update everything to 16.0.1 because of complete mess with different versions of java on my machine, like I was able to compile but not to run generated .jar files and etc.
mvn compile output:

[ERROR] Error executing Maven.
[ERROR] java.lang.IllegalStateException: Unable to load cache item
[ERROR] Caused by: Unable to load cache item
[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper

Here is my pom.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>TaxiDB</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>16.0.1</release>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <maven.compiler.source>16</maven.compiler.source>
        <maven.compiler.target>16</maven.compiler.target>
    </properties>

    <dependencies>
        ...
    </dependencies>
</project>

mvn -version output:

Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 16.0.1, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-16-oracle
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.8.0-50-generic", arch: "amd64", family: "unix"

java -verion output:

java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
like image 793
denh Avatar asked Apr 30 '21 13:04

denh


People also ask

How do I force Java to Maven?

Running the mvn -v command will show the Java version in which Maven runs.

Does Maven work with Java 17?

In case of Maven, we specify the compiler plugin to use Maven with Java 17. The next step is to basically upgrade the dependencies of our application.

Is it possible to use Maven to compile a Java project?

Before that, I used maven to compile a java 15 project, but I decided to update everything to 16.0.1 because of complete mess with different versions of java on my machine, like I was able to compile but not to run generated .jar files and etc. [ERROR] Error executing Maven.

Why does MVN compile fail to build my project?

If you were to run mvn compile to build the project now, the build would fail because you’ve not declared Joda Time as a compile dependency in the build. You can fix that by adding the following lines to pom.xml (within the <project> element):

How do I execute a build with Maven now?

You can execute several build lifecycle goals with Maven now, including goals to compile the project’s code, create a library package (such as a JAR file), and install the library in the local Maven dependency repository. To try out the build, issue the following at the command line:

Where can I find the compiled class files in Maven?

This will run Maven, telling it to execute the compile goal. When it’s finished, you should find the compiled .class files in the target/classes directory.


1 Answers

The problem is your Maven version is too old. It's not compatible with JDK 16.

Try to manually install maven version 3.8.1:

https://maven.apache.org/install.html

This will solve your problem without downgrading your JDK version.

like image 163
ccymus Avatar answered Oct 21 '22 08:10

ccymus