3

我正在尝试包含module-info.javathat的 javadoc 代码requires org.apache.logging.log4j;

我已经包含了来自 Maven Central 的 jar,它与"org.apache.logging.log4j:log4j-api:2.11.0模块路径上的坐标(它是一个多版本 jar)相匹配。

javac编译代码很好,但以下简化javadoc命令输出错误:

javadoc --module-path ./log4j-api-2.11.0.jar -d ~/Desktop ./src/main/java/module-info.java

错误:

错误:找不到模块:org.apache.logging.log4j 需要 org.apache.logging.log4j;

当我手动重新打包log4j-api-2.11.0.jar为非多版本 jar 时,javadoc工作正常(上面的简化命令输出关于 的错误No public or protected classes found to document,但我的真实命令有效,并且该错误表明简化命令已通过module not found错误)。

javadoc(来自 Oracle JDK 10.0.2+13)是否不支持模块路径上的多版本 jar?

还是有什么问题log4j-api-2.11.0.jar可以修复,同时仍将其作为多版本 jar 进行维护?

4

2 回答 2

1

这是 Javadoc 工具中的一个错误,已报告给 Oracle。请参阅https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8208269

于 2018-07-27T23:41:42.677 回答
0

正如您在评论中指出的那样,javadocmodule-info.class驻留在META-INF/versions/9中时,这似乎是工具的问题。

查看2.11.0发行说明,核心没有太多的实现更改,可以利用org.apache.logging.log4j:log4j-api:2.10.0留在多发行版 jar 上log4j-api并使用javadoc工具生成文档。

我可以确认上述方法适用于 IDE(IntelliJ)和命令行。

于 2018-07-26T05:38:11.707 回答