为什么 Maven javadoc 失败并出现错误“无法读取选项”?

问题描述 投票:0回答:3

当我运行

mvn javadoc:javadoc
时,出现以下错误:

[错误]构建错误
[信息] ---------------------------------------------------------- ------------------------
[信息] JavaDocs 报告生成中发生错误:退出代码:1 -
javadoc: 错误 - 无法读取选项(系统找不到指定的文件)

命令行为:“C:\Program Files\Java\jdk1.6.0_14\jre\.. in\javadoc.exe”
 @选项@包

当我在系统上调用命令

"C:\Program Files\Java\jdk1.6.0_14\jre..\bin\javadoc.exe"
时,它会运行 javadoc 可执行文件。

我正在跑步:

  • JDK 1.6.0_14
  • Maven 2.0.8

我的 POM 的 javadoc 报告部分如下所示:

 
    
      
        org.apache.maven.plugins
        maven-javadoc-插件
      
      ...

以及相关环境变量:

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14
M2_HOME=C:\Program Files\Apache 软件基金会 pache-maven-2.0.8
M2_REPO=C:\文档和设置\\.m2
epository // 是我的用户
MAVEN_OPTS=-XX:MaxPermSize=128m -Xmx512m

我尝试过重新安装Java和Maven,以及使用Maven 2.1.0、JDK 1.6.0_11,甚至JDK 1.5.0_11。我将我的设置与环境几乎相同但没有问题的同事进行了比较。它大约一个月前可以工作,不,我不知道从那以后我的系统发生了什么变化。我第一次遇到它是在 JDK 1.6.0_11 上。我在存储库中尝试过的每个项目都会发生这种情况,并且我的同事对相同的项目没有任何问题。所以我很确定这只是我的环境而不是项目本身。

我真的很感激任何对此的建议。

java maven-2 javadoc maven-plugin
3个回答
7
投票

我想通了,但首先我尝试了各种方法:

  • 卸载系统上的所有 JDK 和 JRE,然后将 Java 重新安装到没有空格的路径
  • 删除我没有使用的每个环境变量,并清理我的路径
  • 将 Maven 和我的本地存储库重新定位到没有空格的目录
  • 重新启动(你永远不知道,这是 Windows)

今天我尝试运行一个无法正确执行的批处理文件,我很快意识到,当我双击它时,它正在执行该文件,但不在它所在的目录中。然后它击中了我。

几周前,我厌倦了我们的 IT 人员强制我们的 cmd 窗口在

H:
打开,所以我在 Google 上搜索并使用 此页面 来“修复它”。这似乎奏效了;几周以来我没有遇到任何问题,而且我已经忘记了我的 cmd 窗口都曾经打开到某个
H:
驱动器。但是每个 cmd 窗口都会打开到我指定的目录——无论我运行“cmd”还是单击批处理文件,或者 Maven 打开一个新的 cmd 窗口...

我猜当 Maven 运行时,它会执行

javadoc
命令。因此 javadoc 部分可以工作,但它找不到它写出的选项文件,因为工作目录错误。

所以,现在我回到

H:
,直到我能弄清楚这一点。然后我会把别的事情搞砸。但希望,如果没有别的事,这会对其他人有所帮助......


0
投票

我认为问题在于 javadoc 命令在没有任何参数的情况下运行。 我在一个多模块项目中遇到了这个问题,它试图对非 java 模块进行 javadoc。 (父级 pom 正在请求 javadoc。)

相关模块是否需要制作 javadoc?我们最终迁移到了 maven 2.1.0,我还没有看到问题再次出现。

你的其他团队成员也在使用maven 2.0.8吗?


0
投票

显然对我来说根本原因是系统管理团队有一个启动脚本,需要 Windows 注册表中的

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AUTORUN
键,将当前工作目录更改为完全不同的路径,就像这样 -
REG_EXPAND_SZ cd /d <path>

因此,当maven执行

javadoc
命令时,它会启动一个新的
cmd
进程,该进程总是将工作目录更改为Windows注册表中指定的路径,显然它找不到javadoc所需的资源.

从 Windows 注册表中删除它解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.