2014-09-22 20 views
11

Dostaję następujący błąd podczas zrobićgeneracja Javadoc nie powiodło się: ClassCastException: com.sun.tools.javadoc.ClassDocImpl nie mogą być oddane do com.sun.javadoc.AnnotationTypeDoc

mvn clean deploy -DperformRelease=true 

[Błąd ] Kod zakończenia: 1 - .java: 3: pakiet javax.inject nie jest istnieje
[BŁĄD] import javax.inject.Named;
[błąd]^
[błąd] TransactionServiceExternalImpl.java:5: nie można znaleźć symbolu
[błąd] Symbol: klasy o nazwie
[błąd] @Named ("transactionServiceExternal")
[błąd]^
[błąd] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl nie mogą być oddane do com.sun.javadoc.AnnotationTypeDoc

POM jest to ...

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

Jest tylko jedna klasa ...

import javax.inject.Named; 

@Named("transactionServiceExternal") 
public class TransactionServiceExternalImpl 
{ 
} 

pojawia się błąd z

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

Ale NIE z. ..

  • jdk1.7.0_05

Ktoś ma jakieś pomysły?

Uwagi: Apache Maven 3.0.4 (r1232337; 2012-01-17 08: 44: 56 + 0000)


Teraz wiem, że powodem jest to, że Maven Javadoc Plugin zmieniła się z 2,9 .1 do 2.10. i to jest przyczyną problemu.

widzę to ostrzeżenie ...

[OSTRZEŻENIE] 'build.plugins.plugin.version' dla org.apache.maven.plugins: Maven-javadoc-plugin brakuje. [OSTRZEŻENIE] "build.plugins.plugin.version" dla org.apache.maven.plugins: maven-deploy-plugin brakuje.

Poprzez ustawienie następujących w moim 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> 

mogę ustalić wersję z powrotem do ostatniego wydania.

Podniosę błąd z twórcami Javadoc Maven.


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


Na marginesie: można sklonować repo SVN dla wersji 2.9.1, zaktualizuj pom do 2.10.1, zrobić mvn zainstalować go umieścić w was M2 teczka. Powinieneś zacząć działać i po prostu musisz usunąć tę wersję tmp, kiedy pojawi się prawdziwe wydanie.

Odpowiedz

13

Mieliśmy takie same problemy w naszych projektach. Istnieje wiele osób mających ten problem, więc powinien być problem dotyczący wtyczki maven-javadoc jako maven-javadoc-plugin breaks mvn release:perform podanej w pierwszej odpowiedzi. Problem z jirą to http://jira.codehaus.org/browse/MJAVADOC-408.

czasowe rozwiązania:

  • Wykonaj budować z -Dmaven.javadoc.skip=true opcji
  • Dodaj tę właściwość w pom.xml <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • Fix wersja Maven-javadoc-plugin do 2.9.1 w sekcji pluginManagement jak
<pluginManagement> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9.1</version> 
    </plugin> 
    </plugins> 
</pluginManagement> 

Mam nadzieję, że problem zostanie wkrótce rozwiązany.

Aktualizacja Według Noremac w komentarzach, jeśli używasz zwalniającą wtyczki i chcą przekazywać argumenty do niego we właściwy sposób, aby to zrobić jest -Darguments = "- Dmaven.javadoc.skip = true" .

W mojej odpowiedzi trzymaj się w drugą stronę, ponieważ dzieje się to w dowolnej wersji maven, która używa javadoc.

Aktualizacja 2 także TheConstructor w komentarzach mówi, że wersja 2.10.1 rozwiązać problem. Nie jestem w stanie tego sprawdzić.

+0

To jest dobre podsumowanie opcji od 2014-09-23. Jedyne, co mogę dodać, to oglądać/monitorować i głosować pod adresem http://jira.codehaus.org/browse/MJAVADOC-408 .. lub przesłać poprawkę :) –

+3

Warto zauważyć, że '-Dmaven.javadoc.skip = true' nie pomoże, jeśli uruchomisz 'mvn release: perform'. –

+2

@ MarcelStör jest to nieprawidłowe. Po typowym użyciu wtyczki wydania, musisz przekazać argumenty za pomocą czegoś takiego jak -Darguments = "- Dmaven.javadoc.skip = true". Oto, co zrobiliśmy tutaj, aby obejść problem w naszych wydaniach. http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html – Noremac

1

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

klasy budowlanej (łącznie z 3rd stron zależnościami) nie są na javadoc ścieżce klasy już

Ale jeśli dodać dependecies do 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> 
... 

to nie pomoże.

2

Mamy ten sam problem, a my tymczasowo rozwiązać ten problem jednoznacznie określić wersję Maven Javadoc Plugin 2.9.1

0

dodać do nadrzędnego POM:

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

rozwiązać problemu

1

ten trochę pracował dla mnie, musiałem dodać wtyczkę w ten sposób, ponieważ mieliśmy już inne wtyczki ustawione dla kompilacji.Uwaga Usunąłem nasze inne wtyczki z poniższego przykładu:

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

Skorzystaj z następującej wtyczki do generowania dokumentów 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>