2014-09-22 60 views
11

我收到以下錯誤,當我做Javadoc生成失敗:ClassCastException異常:com.sun.tools.javadoc.ClassDocImpl不能轉換到com.sun.javadoc.AnnotationTypeDoc

mvn clean deploy -DperformRelease=true 

[錯誤]退出代碼:1 - .java:3:軟件包javax.inject不存在 存在
[錯誤] import javax.inject.Named;
[ERROR]^
[ERROR] TransactionServiceExternalImpl.java:5:找不到符號
[ERROR]符號:類命名
[ERROR] @Named( 「transactionServiceExternal」)
[ERROR]^
[ERROR] 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

人有什麼想法?

注:阿帕奇Maven的3.0.4(r1232337; 2012-01-17 08:44:56 + 0000)


我現在知道,其原因在於Maven的插件的Javadoc已經從2.9變.1至2.10。 這是問題的原因。

我可以看到這個警告...

[警告] 'build.plugins.plugin.version' 的org.apache.maven.plugins:Maven的Javadoc的插件缺失。 [警告]'build.plugins.plugin.version'for org.apache.maven.plugins:缺少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


在一個側面說明:您可以克隆SVN回購協議的2.9.1版本,更新POM以2.10.1,做一個MVN安裝到把它放在你M2夾。你應該重新開始工作,當真正的發行版出來時,你只需要刪除這個tmp版本。

回答

13

在我們的項目中遇到同樣的問題。 Theres很多人有這個問題,所以應該是關於maven-javadoc-plugin的問題,maven-javadoc-plugin breaks mvn release:perform在第一個答案中說明。傑拉的問題是http://jira.codehaus.org/browse/MJAVADOC-408

時序解決方案:

  • ,可執行建立與-Dmaven.javadoc.skip=true選項
  • 在pom.xml中添加此屬性<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • 修復Maven的Javadoc的插件版本2.9.1像
  • 你pluginManagement節
<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 =真」 。

生病保持在我的答案中的另一種方式,因爲這發生在任何使用javadoc的maven版本中。

更新2 此外TheConstructor在評論中說,2.10.1版本修復了這個問題。我無法檢查出來。

+0

這是截至2014年9月23日的選項的一個很好的總結。我唯一可以添加的是觀看/監視並投票http://jira.codehaus.org/browse/MJAVADOC-408 ..或提交補丁:) – 2014-09-24 05:30:01

+3

值得注意的是'-Dmaven.javadoc.skip =如果你運行'mvn release:perform',true'不起作用。 – 2014-09-24 07:40:50

+2

@MarcelStör這是不正確的。在發佈插件的典型使用之後,您需要通過類似於-Darguments =「 - Dmaven.javadoc.skip = true」的方式將參數傳遞給它。這是我們在這裏完成的,以解決我們發佈的問題。 http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html – Noremac 2014-09-26 14:21:46

1

從JIRA http://jira.codehaus.org/browse/MJAVADOC-407

構建類(包括第三屆締約方依賴)不在的javadoc classpath中了

但是如果我添加依賴判斷Maven的Javadoc的插件:

... 
    <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> 
... 

這沒有幫助。

2

我們有同樣的問題,我們暫時解決了這個問題,明確指定的Maven插件的Javadoc版本2.9.1

0

其添加到父POM:

<build> 
... 
<pluginManagement> 
    <plugins> 
    <plugin> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9.1</version> 
    </plugin> 
    </plugins> 
</pluginManagement> 
... 
<build> 

解決問題

1

這有點爲我工作,我不得不以這種方式添加插件,因爲我們已經有其他插件設置爲構建。注意我從下面的示例中刪除了其他插件:

<build>  
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.9.1</version> 
     </plugin> 
    </plugins> 
</build> 
0

使用以下插件生成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> 
相關問題