Maven报告异常: JAVA_HOME未正确设置

5

为了解决这个问题,我试过许多JDK版本,但无论我使用哪个Java版本,结果似乎总是相同的。

MavenReportException:创建归档文件时出错:无法找到javadoc命令:环境变量JAVA_HOME设置不正确。

调试

这些是当前安装的JDK: enter image description here

我运行了:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export PATH=$JAVA_HOME/bin:$PATH

java -version

openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-0ubuntu2~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)

javac -version

javac 1.8.0_265

mvn clean deploy -P release

图像描述进入此处

MavenReportException: 创建归档文件时出错:无法找到 javadoc 命令:环境变量 JAVA_HOME 设置不正确。

Maven 插件配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <executable>${JAVA_HOME}/bin/javac</executable>
    </configuration>
</plugin>

which javawhich javadoc 都指向 /usr/bin,这可能是问题所在吗?

编辑1

/bin文件夹的内容:

enter image description here


你是否检查了/usr/lib/jvm/java-8-openjdk-amd64/bin/目录下是否包含javadoc工具? - khmarbaise
是的,我正在更新问题。 - Phill Alexakis
从您的maven-compiler-plugin中删除javac的配置。如果JAVA_HOME设置正确,则它只是多余的。通过which java检查java来自哪里? - khmarbaise
我尝试过但没有改变结果,which java 的输出是 /usr/bin/java - Phill Alexakis
从您的 PATH 中删除设置,并仅将 JAVA_HOME 设置为不在 PATH 中... - khmarbaise
2个回答

6

我不知道这是否有帮助,但在我的情况下maven出现了问题:Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:jar 并抛出一个异常:MavenReportException: Error while generating Javadoc: Unable to find javadoc command: The environment variable JAVA_HOME is not correctly set.

解决方案是找到引起问题的插件,在这种情况下是<artifactId>maven-javadoc-plugin</artifactId>,然后添加以下内容:

                <configuration>
                    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
                </configuration>

${java.home} 的值是 /usr/lib/jvm/java-11-openjdk-amd64/

插件的外观如下:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
                </configuration>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

目标已成功执行。


0
请使用以下命令检查Maven的Java版本:
#mvn --version
它会显示如下内容:
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T01:19:05+05:30) Maven home: /home/user/apache-maven-3.5.3 Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /home/user/jdk1.8.0_121/jre Default locale: en_IN, platform encoding: UTF-8
在这里,您可以看到使用的JAVA版本及其位置。

尽管变量为 JAVA_HOME=/usr/lib/jvm/jdk1.8.0_261-amd64,但 mvn --version 给出的是 /usr/lib/jvm/java-11-openjdk-amd64,其中不包含 javac。 - Phill Alexakis
我已经修复了,现在它指向了正确的位置,但仍然无法运行“mvn deploy -P release”。 - Phill Alexakis
问题在于我无法更改mvn -version命令使用的JAVA_HOME变量。 - Phill Alexakis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接