Почему при установке javadoc происходит сбой установки maven?
Когда я запускаю 'maven install', я получаю следующее..
[INFO] [javadoc: javadoc {выполнение: по умолчанию}] [INFO] ------------------------------------------------------------------------ [ОШИБКА] ОШИБКА ЗДАНИЯ [ИНФО] ---- -------------------------------------------------- ------------------ [INFO] Произошла ошибка при создании отчета 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,.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(Собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в javafl.) на 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
Что я делаю неправильно?
5 ответов
Также, если у вас есть:
[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/
Чтобы удалить опцию -use в maven-javadoc-plugin, используйте следующую конфигурацию:
<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>
Из этого сообщения об ошибке это произойдет, если в пакете по умолчанию есть классы и -use включено. Поэтому одним из решений является перемещение классов в пакете по умолчанию в именованный пакет.
Раздражает, что эта ошибка не была исправлена в инструменте javadoc, распространяемом с некоторыми дистрибутивами, такими как MacOS X Lion.
Ошибка, кажется, была исправлена в openjdk 6, по крайней мере, после проверки исходного кода. Скачать этот источник можно по адресу: http://download.java.net/openjdk/jdk6/
Существует нефиксированная ошибка, которая кажется вашей проблемой. Из описания ошибки известные обходные пути: удалить опцию -use или использовать JDK 1.4.2. Вы используете Java 6, так что это может быть так.
Строка, в которой происходит исключение NullPointerException:
printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
Так что, возможно, проблема возникает из-за опечатки в вашем файле package.html?
Посмотрите на ваши переменные окружения и удалите CLASSPATH
переменная или добавьте путь к вашему пакету.
javadoc
использует classpath для определения пакетов. Если путь не в вашей переменной, он потерпит неудачу.