簡體   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