运行'maven install'时,我得到以下内容..
[INFO] [javadoc:javadoc {执行: 默认}] [INFO] -------------------------------------------------- ---------------------- [错误]建立错误[信息] -------------------------------------------------- ---------------------- [INFO]发生错误 JavaDocs报告生成:退出代码: 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) 在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) 在com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42) 在com.sun.tools.doclets.standard.Standard.start(Standard.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at 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) at 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
我做错了什么?
答案 0 :(得分:13)
另外,如果你有:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (default-cli) on project coolproject-api: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - javadoc: warning - No source files for package org.coolproject.api
[ERROR] javadoc: warning - No source files for package org.coolproject.api
[ERROR] javadoc: warning - No source files for package org.coolproject.api.listeners
[ERROR] javadoc: error - No public or protected classes found to document.
Java编译器使用包样式名称来理解源目录,如:
coolproject-api/java/org.coolproject.api/
并没有问题,但 maven-javadoc-plugin 却没有。因此,请尝试将“物理”包布局更改为:
coolproject-api/java/org/coolproject/api/
答案 1 :(得分:3)
要删除maven-javadoc-plugin中的-use选项,请使用以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<use>false</use>
<links>
<link>http://java.sun.com/javase/6/docs/api/</link>
</links>
</configuration>
</plugin>
答案 2 :(得分:1)
有一个unfixed bug似乎是你的问题。根据错误描述,已知的解决方法是删除-use选项或使用JDK 1.4.2。你正在使用Java 6,所以可能就是这种情况。
NullPointerException出现的行是:
printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
所以也许问题是因为你的package.html文件中的拼写错误而发生的?
答案 3 :(得分:1)
从错误报告中,当一个人在默认包中有类并且-use打开时,就会发生这种情况。因此,一种解决方案是将默认包中的类移动到命名包中。
令人烦恼的是,在与一些发行版分发的javadoc工具中,例如MacOS X Lion,尚未修复此错误。
这个bug似乎已在openjdk 6中修复,至少从检查源代码开始。下载该来源:http://download.java.net/openjdk/jdk6/
答案 4 :(得分:0)
查看您的环境变量并删除CLASSPATH
变量或添加您的包路径。
javadoc
使用类路径来确定包。如果路径不在您的变量中,它将失败。