为什么在javadoc生成期间maven安装失败?

时间:2009-05-20 14:18:06

标签: maven-1

运行'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

我做错了什么?

5 个答案:

答案 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使用类路径来确定包。如果路径不在您的变量中,它将失败。