无法用maven编译java项目

Posted

技术标签:

【中文标题】无法用maven编译java项目【英文标题】:Unable to compile java project with maven 【发布时间】:2021-07-23 20:16:33 【问题描述】:

我正在尝试在 java 16.0.1 上使用 maven 构建 IntelliJ 项目,但它无法编译我的项目,尽管 IntelliJ 能够成功完成它。在此之前,我使用 maven 编译了一个 java 15 项目,但我决定将所有内容更新到 16.0.1,因为我的机器上的不同版本的 java 完全混乱,就像我能够编译但不能运行生成的 .jar 文件等等mvn compile输出:

[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

这是我的pom.xml 文件:

<?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 输出:

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 输出:

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)

【问题讨论】:

我认为release 应该是16,而不是16.0.1 @JF***Meier,试过了。相同的输出。 不确定这是否对您有帮助,但您没有为 maven-jar-plugin 指定版本 @Lino,没用 升级到 maven 3.8 解决了这个问题。在 Ubuntu 上,只有 3.6 可通过 apt 获得,因此您必须手动安装它。这是一个相当不错的指南:linuxize.com/post/how-to-install-apache-maven-on-ubuntu-20-04(但是脚本中的JAVA_HOME路径有错误) 【参考方案1】:

问题是您的 Maven 版本太旧。它与 JDK 16 不兼容。

尝试手动安装maven 3.8.1版本:

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

这将解决您的问题,而无需降级您的 JDK 版本。

【讨论】:

是的,有帮助 谢谢 尝试使用 sdkman 安装 JDK 和 Maven,这样可以更轻松地管理您的 JDK 和工具版本 这也为我解决了这个问题。谢谢!【参考方案2】:

我在 Ubuntu 20.10 上运行 mvn compile 时遇到了这个问题。在 Ubuntu 21.04(最新版本)上运行相同的 maven 命令似乎没问题。

您可能需要检查您正在运行的 linux 版本。如果运行旧版本,请升级到 Ubuntu 21.04。

【讨论】:

以上是关于无法用maven编译java项目的主要内容,如果未能解决你的问题,请参考以下文章

已解决maven项目src/main/java下包含静态文件无法被编译问题

用IntelliJ IDEA建maven项目,无法再main下建java文件了无法new class,为啥

用Java在各种框架下编译Scala项目

Centos7配置Java maven环境,maven打包编译项目

Centos7配置Java maven环境,maven打包编译项目

maven 项目无法发布,无法编译的解决办法