如何使用 JDK 11 在 Android 项目中生成 javadoc

Posted

技术标签:

【中文标题】如何使用 JDK 11 在 Android 项目中生成 javadoc【英文标题】:How to generate javadoc in an Android project with JDK 11 【发布时间】:2020-06-16 18:56:34 【问题描述】:

我的设置:

android Gradle 插件 3.6.1 Gradle 6.2.1 JDK 11

我有一个使用 JDK 8 构建 Javadoc 的工作配置。它看起来像这样(基于 https://www.stkent.com/2016/02/05/adventures-with-javadocs-part-2.html):

tasks.withType(Javadoc) 
    options.addStringOption('Xdoclint:none', '-quiet')
    options.addStringOption('encoding', 'UTF-8')
    options.addStringOption('charSet', 'UTF-8')


task javadoc(type: Javadoc) 
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))


task javadocJar(type: Jar, dependsOn: javadoc) 
    from javadoc.destinationDir
    archiveClassifier.set('javadoc')

正如文章中所评论的,有大量关于类等的警告。使用 JDK 11 时,这些警告现在是错误。即使忽略错误,我也可以看到 javadoc 没有正确生成。以前它包含所有包/类的 HTML,但在 JDK 11 中只有一个带有 MANIFEST.MF 文件的元数据文件夹(包含:“Manifest-Version:1.0”)。

这种行为改变的原因可能是什么?

更新: 根据 cmets 中的要求,我添加了我得到的错误类型的示例(正如我所提到的,这种类型的错误在引用的文章中,但在 JDK8 中它们只是警告):

 symbol:   class NonNull
  location: package androidx.annotation
/builds/myproject/src/main/java/com/mycompany/package/Bar.java:7: error: package com.mycompany.package does not exist
import com.mycompany.package.Foo;

FAILURE: Build failed with an exception.

【问题讨论】:

软件更改。东西被弃用了。但是如果不知道您遇到了什么错误,就很难为您提供帮助。 @FedericoklezCulloca 不妨试试pressing more buttons 我现在在主工单中添加了一个错误示例。 【参考方案1】:

在 javadoc 中添加 --ignore-source-errors 选项即可解决。

为此,您应该在 javadoc 任务中添加以下行:

options.addBooleanOption('-ignore-source-errors', true)

【讨论】:

以上是关于如何使用 JDK 11 在 Android 项目中生成 javadoc的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ubuntu 14.04 的 android 中安装 jdk 8

如何将 Android Studio 默认 gradle JDK 更改为 11

如何在 github 工作流中缓存 JDK 和 android sdk?

如何在 gradle 多项目构建中包含 Android 项目?

如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核

如何在Android studio中使用java8 的Lambda表达式