module-info.java含导入时javadoc执行失败的解决方案咨询
解决OpenJDK模块含
ParticipatesInPreview导入时Javadoc模块未找到错误 核心解决方案
针对包含jdk.internal.javac.ParticipatesInPreview导入及注解的OpenJDK模块,调整Javadoc命令,补充模块依赖、内部包访问权限及预览特性启用参数,示例命令如下:
JDK20的java.management模块示例
javadoc \ --module java.management \ --module-source-path <OpenJDK源码根目录> \ --add-modules jdk.compiler \ --add-reads java.management=jdk.compiler \ --add-exports jdk.compiler/jdk.internal.javac=java.management \ --enable-preview \ --release 20 \ -d ./javadoc-output
JDK21的jdk.compiler模块示例
javadoc \ --module jdk.compiler \ --module-source-path <OpenJDK源码根目录> \ --enable-preview \ --release 21 \ -d ./javadoc-output
参数说明
--module-source-path:指定OpenJDK源码根目录,确保Javadoc能定位到目标模块的源码文件。--add-modules jdk.compiler:显式引入ParticipatesInPreview类所属的jdk.compiler模块。--add-reads java.management=jdk.compiler:允许目标模块读取jdk.compiler模块内容,解决依赖解析问题。--add-exports jdk.compiler/jdk.internal.javac=java.management:将jdk.compiler的内部包jdk.internal.javac暴露给目标模块——因为ParticipatesInPreview属于非公开内部API,默认禁止外部模块访问。--enable-preview:启用预览特性支持,确保Javadoc能解析@ParticipatesInPreview注解。--release:指定与目标JDK版本匹配的文档生成版本,避免版本不兼容问题。
问题原因
出现“module xxx not found on source path”错误的核心逻辑:
jdk.internal.javac.ParticipatesInPreview是jdk.compiler模块的内部API,默认禁止其他模块访问,Javadoc解析module-info.java时无法识别该导入。- 仅添加
--add-modules不足以解决权限问题,必须通过--add-reads和--add-exports开放模块间的读取与内部包访问权限。 - 缺少
--enable-preview参数时,Javadoc无法解析预览特性相关注解,间接导致模块解析失败。
内容的提问来源于stack exchange,提问作者stewori
相关产品推荐
相关产品推荐

