生成 Javadoc 错误 Android Studio

20

由于某种原因,我无法在Android Studio中生成javadoc,在96个警告之后,它给了我这个:

95 warnings
java.lang.NullPointerException
at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:83)
at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:44)
at com.sun.tools.javadoc.ClassDocImpl.superclassType(ClassDocImpl.java:496)
at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:453)
at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:491)
at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:194)
at com.sun.tools.doclets.internal.toolkit.util.ClassTree.buildTree(ClassTree.java:146)
at com.sun.tools.doclets.internal.toolkit.util.ClassTree.<init>(ClassTree.java:91)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:123)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83)
at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63)
at com.sun.tools.doclets.standard.Standard.start(Standard.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280)
at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397)
at com.sun.tools.javadoc.Start.begin(Start.java:167)
at com.sun.tools.javadoc.Main.execute(Main.java:59)
at com.sun.tools.javadoc.Main.main(Main.java:49)

javadoc退出时的退出码为1

是否有办法在Android Studio中创建javadoc?如果没有,我该如何创建一个,我的项目需要它。


我猜想在2014年的Android Studio中没有Javadoc UI,对吗? - carloswm85
5个回答

33
组合了这里提供的两个答案对我很有帮助。尽管文档生成得很好,但我仍然收到900个警告和140个错误,但它们都与android包相关。这只是给定的解决方案结合起来并为不熟悉Android Studio或命令行界面的人解释一下。
如何在Android Studio中生成Javadoc
1.打开Android Studio>工具>生成Javadoc 2.选择范围,通常是整个项目 3.检查包括jdk和库源 4.指定输出目录。将会在此处转储大量文件,因此建议创建新文件夹。 5.选择要公开的方法。通常保护是理想的,除非为了让学校看起来很出色。
“棘手”的部分,“其他命令行参数”。在漂亮的GUI下,直接调用javadoc命令来运行javadoc生成器。命令行使用像这样的结构:program_name [-flag] argument [-flag] argument,可以猜测这些是调用程序的某些可选行为,并传入应该是什么。
因此,在“其他命令行参数”下指定以下内容:
6.-encoding utf-8 -bootclasspath /path/to/sdk/platforms/android-##/android.jar,然后单击确定
您实际上正在使用这些标志和参数调用javadoc程序。这两个标志允许javadoc程序忽略unicode字符并找到android.jar,尽管似乎所有标记为#的内容都被读取为数字,并且android javadocs中充满了它们。
我敦促您仔细阅读类别的警告,尽管似乎有大量的垃圾邮件,因为javadoc会告诉您是否忘记了像空@返回语句这样的东西。

10
在"其它命令行参数"中添加以下行,可以解决错误:-bootclasspath /path/to/sdk/platforms/android-##/android.jar

我之前有4个错误(但是一些内容已经生成了),使用这个方法解决了它们。谢谢! - jmm
仍然出现以下错误:"构建Javadoc信息... com.sun.tools.javac.util.FatalError: 致命错误:无法在类路径或引导类路径中找到java.lang包 1个错误" - Ewoks
@Ewoks 然后,我建议您提出一个问题,解释您已经尝试过这个并展示您仍在遇到的错误,这样您可能会得到更多的反馈。祝你好运! - this.user3272243
1
使用新的Java版本,不允许使用-bootclasspath。请改用-sourcepath - akalanka

2

我认为这个问题不仅仅是针对Android Studio。我猜想只要在JavaDoc注释中有Unicode字符,就会发生这种情况。

尝试使用以下命令:

javadoc -encoding utf-8

或者,您可以使用Unicode转义(例如\u0000)代替直接包含Unicode字符。

在Eclipse中,您可以向JavaDoc命令添加额外的选项:

项目 -> 生成Javadoc -> 下一步 -> 在最后一页,在“额外的Javadoc选项”中编写:

-encoding UTF-8

我应该把它放在哪里?是的,必须这样,因为我的注释中有口音和所有的附属设备。 - this.user3272243
1
尝试 -encoding UTF-8 -charset UTF-8 -docencoding UTF-8 - bstar55
javadoc是一种工具,用于从Java源代码中生成API文档。 - this.user3272243
1
不要在每个前面加上Javadoc,那部分被认为是默认的,你只需要添加额外的内容。 - bstar55
仍然不起作用,我刚在两台电脑上测试了一下,一台是Ubuntu,另一台是Win7,都出现了相同的问题,即使我创建一个新项目,也会出现几乎相同的错误,我猜应该是Android Studio的问题... - this.user3272243
显示剩余5条评论

0
如果您有一个包含转义Unicode的静态final字符串变量,可以尝试在文档中引用该字符串的值。Android Studio能够解析侧边栏文档中的Unicode。但是,如果您正在尝试从命令行生成文档,则不知道是否有效。
private static final String UNICODE_VALUE = "\u251c";//or whatever string

/**
 * {@value #UNICODE_VALUE}
 */
//whatever you want to document

0

我知道这可能有点晚了,但是这个努力是值得的。你可以将这个添加到 gradle.build 文件中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接