我正在尝试javadoc代码,其中包含一个requires org.apache.logging.log4j;的module-info.java。
我已经包含了来自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 10.0.2+13)不支持模块路径上的多版本jars吗?
或者,log4j-api-2.11.0.jar是否有什么问题可以修复,同时仍然将其作为多版本jar进行维护?
发布于 2018-07-28 07:41:43
这是Javadoc工具中的一个错误,已报告给Oracle。参见https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8208269。
发布于 2018-07-26 13:38:12
正如您在评论中指出的,当javadoc驻留在META-INF/versions/9 中时,这似乎是module-info.class工具的一个问题。
看一下2.11.0 release notes,核心没有太多的实现更改,可以利用org.apache.logging.log4j:log4j-api:2.10.0停留在log4j-api的多版本jar上,让它与javadoc工具一起工作来生成文档。
我可以用集成开发环境(IntelliJ)和命令行确认上面的工作。
https://stackoverflow.com/questions/51525069
复制相似问题