为什么在 javadoc 生成过程中 Maven 安装失败?

发布于 2024-07-21 06:58:43 字数 2372 浏览 9 评论 0原文

运行“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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

香橙ぽ 2024-07-28 06:58:43

另外,如果您有:

[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/

Also, if you have:

[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 compiler understands sources directories with package-style names like:

coolproject-api/java/org.coolproject.api/

and there are no problems with it, but maven-javadoc-plugin doesn't. So try to change your "physical" packages layout to:

coolproject-api/java/org/coolproject/api/
奢望 2024-07-28 06:58:43

要删除 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>

To drop the -use option in maven-javadoc-plugin, use the following configuration:

        <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>
红ご颜醉 2024-07-28 06:58:43

有一个未修复的错误似乎是您的问题。 从 bug 描述来看,已知的解决方法是删除 -use 选项或使用 JDK 1.4.2。 您使用的是 Java 6,因此可能是这种情况。

发生 NullPointerException 的行是:

printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);

那么问题可能是由于 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:

printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);

So perhaps the problem is occurring because of a typo in your package.html file?

等风来 2024-07-28 06:58:43

从该错误报告来看,当默认包中有类并且 -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/

梦晓ヶ微光ヅ倾城 2024-07-28 06:58:43

查看您的环境变量并删除 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文