为什么在 javadoc 生成过程中 Maven 安装失败?
运行“maven install”时,我得到以下信息..
[信息] [javadoc:javadoc {执行: 默认}] [信息] -------------------------------------------------- ---------------------- [错误] 构建错误 [信息] -------------------------------------------------- ---------------------- [信息] 发生错误 JavaDocs 报告生成:退出代码: 1 - java.lang.NullPointerException 在 com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:180) 在 com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageList(PackageUseWriter.java:124) 在 com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:110) 在 com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUseFile(PackageUseWriter.java:99) 在 com.sun.tools.doclets.formats.html.PackageUseWriter.generate(PackageUseWriter.java:78) 在 com.sun.tools.doclets.formats.html.ClassUseWriter.generate(ClassUseWriter.java:116) 在 com.sun.tools.doclets.formats.html.HtmlDoclet.generateOtherFiles(HtmlDoclet.java:92) 在 com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:122) 在 com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64) 在 com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42) 在 com.sun.tools.doclets.standard.Standard.start(Standard.java:23) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269) 在 com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143) 在 com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340) 在 com.sun.tools.javadoc.Start.begin(Start.java:128) 在 com.sun.tools.javadoc.Main.execute(Main.java:41) 在 com.sun.tools.javadoc.Main.main(Main.java:31)
命令行为: /home/fsl/jdk1.6.0_12/jre/../bin/javadoc @options @packages @argfile
我做错了什么?
When running 'maven install', I get the following..
[INFO] [javadoc:javadoc {execution:
default}] [INFO]
------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO]
------------------------------------------------------------------------ [INFO] An error has occurred in
JavaDocs report generation:Exit code:
1 - java.lang.NullPointerException
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:180)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageList(PackageUseWriter.java:124)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:110)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUseFile(PackageUseWriter.java:99)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generate(PackageUseWriter.java:78)
at com.sun.tools.doclets.formats.html.ClassUseWriter.generate(ClassUseWriter.java:116)
at com.sun.tools.doclets.formats.html.HtmlDoclet.generateOtherFiles(HtmlDoclet.java:92)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:122)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:41)
at com.sun.tools.javadoc.Main.main(Main.java:31)
Command line was: /home/fsl/jdk1.6.0_12/jre/../bin/javadoc @options @packages @argfile
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
另外,如果您有:
Java 编译器可以理解具有包样式名称的源目录,例如:
并且没有任何问题,但 maven-javadoc-plugin 不会。 因此,尝试将您的“物理”包布局更改为:
Also, if you have:
Java compiler understands sources directories with package-style names like:
and there are no problems with it, but maven-javadoc-plugin doesn't. So try to change your "physical" packages layout to:
要删除 maven-javadoc-plugin 中的 -use 选项,请使用以下配置:
To drop the -use option in maven-javadoc-plugin, use the following configuration:
有一个未修复的错误似乎是您的问题。 从 bug 描述来看,已知的解决方法是删除 -use 选项或使用 JDK 1.4.2。 您使用的是 Java 6,因此可能是这种情况。
发生 NullPointerException 的行是:
那么问题可能是由于 package.html 文件中的拼写错误而发生的?
There is an unfixed bug that seems to be your problem. From the bug description the known workarounds are either to drop the -use option or use JDK 1.4.2. You're using Java 6 so this may be the case.
The line the NullPointerException is occuring at is:
So perhaps the problem is occurring because of a typo in your package.html file?
从该错误报告来看,当默认包中有类并且 -use 处于打开状态时,就会发生这种情况。 因此,一种解决方案是将默认包中的类移动到命名包中。
令人烦恼的是,某些发行版(例如 MacOS X Lion)附带的 javadoc 工具中尚未修复此错误。
该错误似乎已在 openjdk 6 中修复,至少从源代码检查来看是这样。 该源代码的下载地址:http://download.java.net/openjdk/jdk6/
From that bug report, this will occur when one has classes in the default package and -use is on. So one solution is to move the classes in the default package into a named package.
Annoying that this bug hasn't been fixed in the javadoc tool distributed with some of the distributions, such as MacOS X Lion.
The bug appears to have been fixed in the openjdk 6, at least from inspection of the source code. Download of that source available at: http://download.java.net/openjdk/jdk6/
查看您的环境变量并删除 CLASSPATH 变量或添加您的包路径。
javadoc
使用类路径来确定包。 如果路径不在您的变量中,它将失败。Look at your environment variables and delete the
CLASSPATH
variable or add your package path.javadoc
uses the classpath to determine the packages. If the path is not in your variable it will fail.