繁体   English   中英

Javadoc生成失败:ClassCastException:com.sun.tools.javadoc.ClassDocImpl无法强制转换为com.sun.javadoc.AnnotationTypeDoc

[英]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 
{
}

我得到了错误

  • jdk1.5.0_22
  • jdk1.6.0_29
  • jdk1.6.0_43
  • jdk1.6.0_43_32bit

但不是......

  • jdk1.7.0_05

有人有想法么?

备注: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选项执行构建
  • 在pom.xml中添加此属性<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • 将maven-javadoc-plugin版本修复到你的pluginManagement部分中的2.9.1
 <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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM