[
https://issues.apache.org/jira/browse/YETUS-1197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Duo Zhang updated YETUS-1197:
-----------------------------
Component/s: Audience Annotations
> NPE in DocletEnvironmentProcessor
> ----------------------------------
>
> Key: YETUS-1197
> URL: https://issues.apache.org/jira/browse/YETUS-1197
> Project: Yetus
> Issue Type: Bug
> Components: Audience Annotations
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Priority: Major
>
> In HBASE-25983 we tried to build javadoc with JDK11 and finally we end with a
> NPE.
> {noformat}
> [ERROR] java.lang.NullPointerException
> [ERROR] at
> org.apache.yetus.audience.tools.DocletEnvironmentProcessor$DocEnvImpl.excluded(DocletEnvironmentProcessor.java:60)
> [ERROR] at
> org.apache.yetus.audience.tools.DocletEnvironmentProcessor$DocEnvImpl.isIncluded(DocletEnvironmentProcessor.java:50)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils.isIncluded(Utils.java:2685)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getModuleLink(HtmlDocletWriter.java:629)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriterImpl.getHeader(ClassWriterImpl.java:104)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.buildClassDoc(ClassBuilder.java:138)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.build(ClassBuilder.java:120)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:263)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:273)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:207)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.run(AbstractDoclet.java:114)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.doclet.StandardDoclet.run(StandardDoclet.java:72)
> [ERROR] at
> org.apache.yetus.audience.tools.ExcludePrivateAnnotationsStandardDoclet.run(ExcludePrivateAnnotationsStandardDoclet.java:58)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:588)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:432)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:345)
> [ERROR] at
> jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
> [ERROR] at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
> {noformat}
> It is this line
> https://github.com/apache/yetus/blob/bfc2193567614ca3818dc37705eae09cac281ee9/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/DocletEnvironmentProcessor.java#L60
> {code}
> private boolean excluded(final Element e) {
> // Exclude private and limited private types
> if (e.getAnnotation(InterfaceAudience.Private.class) != null) { //
> <==== this line
> return true;
> }
> ...
> }
> {code}
> Seems the Element is null. I checked the code in OpenJDK
> https://github.com/adoptium/jdk11u/blob/faf1f86f95117a5e2a0d52b67647dee893311545/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java#L328
> It does check whether the Element passed in is null, so I think we should
> also add null check here.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)