![](/img/trans.png)
[英]Mojo development : access to javadoc com.sun.tools.javadoc.Main class
[英]Javadoc generation failed : ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc
我这样做时会出现以下错误
mvn clean deploy -DperformRelease=true
[错误]退出代码:1 - .java:3:包javax.inject不存在
[错误]导入javax.inject.Named;
[错误] ^
[ERROR] TransactionServiceExternalImpl.java:5:找不到符号
[错误]符号:类命名
[错误] @Named(“transactionServiceExternal”)
[错误] ^
[错误] java.lang.ClassCastException:com.sun.tools.javadoc.ClassDocImpl无法强制转换为com.sun.javadoc.AnnotationTypeDoc
POM就是这个......
<groupId>com.xxx</groupId>
<artifactId>ts-impl/artifactId>
<version>2.4.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
只有一节课......
import javax.inject.Named;
@Named("transactionServiceExternal")
public class TransactionServiceExternalImpl
{
}
我得到了错误
但不是......
有人有想法么?
备注:Apache Maven 3.0.4(r1232337; 2012-01-17 08:44:56 + 0000)
我现在知道原因是Maven Javadoc插件已经从2.9.1变为2.10。 这就是问题的原因。
我可以看到这个警告......
[警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-javadoc-plugin。 [警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-deploy-plugin。
通过在我的pom中设置以下内容....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
我可以将版本修复回上一版本。
我将向Maven Javadoc创建者提出一个错误。
http://jira.codehaus.org/browse/MJAVADOC-407
请注意:您可以克隆版本2.9.1的SVN repo,将pom更新为2.10.1,执行mvn安装将其放入您的M2文件夹中。 你应该重新开始工作,只需要在真正发布时删除这个tmp版本。
在我们的项目中遇到同样的问题。 很多人都有这个问题所以应该是关于maven-javadoc-plugin的问题,因为maven-javadoc-plugin打破了mvn release:在第一个答案中说明了。 jira问题是http://jira.codehaus.org/browse/MJAVADOC-408 。
时间解决方案:
-Dmaven.javadoc.skip=true
选项执行构建 <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> </plugin> </plugins> </pluginManagement>
我希望问题很快得到解决。
更新根据Noremac的评论,如果您正在使用发布插件并希望将参数传递给它,正确的方法是-Darguments =“ - Dmaven.javadoc.skip = true”。
在我的回答中保持另一种方式,因为这发生在使用javadoc的任何maven构建中。
更新2此外,评论中的TheConstructor说2.10.1版本修复了这个问题。 我无法检查出来。
我们遇到了同样的问题,我们通过明确地将Maven Javadoc插件版本指定为2.9.1来暂时解决了这个问题
来自jira http://jira.codehaus.org/browse/MJAVADOC-407 :
构建类(包括第三方依赖项)不再位于javadoc类路径上
但是,如果我将依赖添加到maven-javadoc-plugin:
...
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10</version>
<dependencies>
<dependency>
<groupId>org.apache.cayenne</groupId>
<artifactId>cayenne-server</artifactId>
<version>3.1B2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
...
这没有用。
这有点对我有用,我必须以这种方式添加插件,因为我们已经为构建设置了其他插件。 注意我从以下示例中删除了我们的其他插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
将此添加到父pom:
<build>
...
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</pluginManagement>
...
<build>
解决问题
使用以下插件生成java文档。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.