无法找到javadoc命令 - maven

时间:2012-12-19 21:35:50

标签: macos maven javadoc

我在项目目录中运行此命令来构建和打包它:

mvn clean javadoc:jar package

我确实正确设置了JAVA_HOME变量。 显然:

$ which java
/usr/bin/java
$ sudo ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Dec 18 23:42 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

$ which javadoc
/usr/bin/javadoc

有谁知道为什么mvn还在抱怨?

Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8:jar (default-cli) on project foo_bar: MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable JAVA_HOME is not correctly set. -> [Help 1]

8 个答案:

答案 0 :(得分:46)

正确的which java不足以证明,因为/usr/bin/可能会在PATH中。检查

$ echo $JAVA_HOME

获取证据。或者运行

$ JAVA_HOME=/path/to/your/java/home mvn clean javadoc:jar package

在OS X上,您可以通过以下方式设置JAVA_HOME

$ export JAVA_HOME=$(/usr/libexec/java_home)

在我的机器上指向

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

答案 1 :(得分:8)

您可以在eclipse中添加JAVA_HOME作为环境变量。

转到你的maven build->添加以下内容。

点击新建 - >

名称:JAVA_HOME

价值:你的道路。

enter image description here

这对我有用!

答案 2 :(得分:4)

花了2-3个小时后,我觉得通过命令行打开Eclipse看起来最容易解决。 请按照以下步骤进行操作

cd <Folder_where_Eclipse.app> open Eclipse.app

现在你的日食能够找到终端环境变量。

答案 3 :(得分:1)

您可以使其使用java.home系统属性而不是JAVA_HOME环境变量:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.0.1</version>
                <configuration>
                    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
                </configuration>
            </plugin>

信息来源:https://medium.com/@kankvish/fixing-issue-the-environment-variable-java-home-is-not-correctly-set-b5f0b66a84d0

答案 4 :(得分:1)

尽管有很多关于OS X的答案,但是对于Debian或类似Debian的系统(例如Ubuntu),我决定滥用“替代”系统:

export JAVA_HOME=$(update-alternatives --query javadoc | grep Value: | head -n1 | sed 's/Value: //' | sed 's@bin/javadoc$@@')

使用awk进行更干净的重写,或者使用更正确的方式访问“替代项”数据库中的值,这是读者的一项练习。

或者,假设在这种情况下,使用“替代”系统的目的是维护诸如/usr/bin/javadoc之类的符号链接,我们可以查询符号链接所指向的路径:

export JAVA_HOME=$(realpath /usr/bin/javadoc | sed 's@bin/javadoc$@@')

虽然这不是唯一可能的“ Java主页”(您可能安装了许多JDK),但鉴于我只关心前进mvn构建,并且错误涉及Javadoc,所以我选择了请参考包含javadoc二进制文件的目录。


别忘了除了JRE还要安装JDK。例如,我需要的JDK是openjdk-11-jdk,以补充我先前安装的JRE openjdk-11-jre


完成上述操作后,JAVA_HOME envvar在我的系统上具有以下值:/usr/lib/jvm/java-11-openjdk-amd64/

答案 5 :(得分:1)

有2个选项可以解决此问题。步骤如下:

  1. 确保将JAVA_HOME配置为环境变量。

  2. 选项1: javadocExecutable 添加到属性中。

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>${project.build.sourceEncoding
        </project.reporting.outputEncoding>
        <java.version>11</java.version>
        <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
    </properties>
    
  3. 选项2:,如下所示将 javadocExecutable 添加到构建部分。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <additionalparam>-Xdoclint:none</additionalparam>
                </configuration>
            </execution>
        </executions>
        <configuration>
            <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
            <excludePackageNames>com.vu.poc.test.objects</excludePackageNames>
            <overview />
        </configuration>
    </plugin>
    

答案 6 :(得分:0)

他们通过在“bin / mvn”shell脚本中添加“export JAVA_HOME”来修复maven 3.1中的OSX,无需在外部设置JAVA_HOME,只是为了找到javadoc。

答案 7 :(得分:0)

将 maven-javadoc-plugin 插件升级到最新版本(3.3.0 或更高版本)。