89

私はJDK8を使用しています(Jenkinsによって起動されたLinux上のWin x64 u25 JDK +を使用してEclipseワークスペースで試しました-jdk-8u20-linux-x64、両方で同じ問題)。

マルチモジュールMavenプロジェクトがあります(パッケージタイプ「pom」のメインモジュールからMavenゴール「javadoc:aggregate」を起動しています)。

Pom ビルド セクションは次のようになります。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
                <additionalparam>-Xdoclint:none</additionalparam>
            </configuration>
        </plugin>
    </plugins>
</build>

私はいつもエラーを受け取ります:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:aggregate (default-cli) on project uloan-global-build: An error has occurred in JavaDocs report generation:
[ERROR] Exit code: 1 - javadoc: error - com.sun.tools.doclets.internal.toolkit.util.DocletAbortException: com.sun.tools.doclets.internal.toolkit.util.DocletAbortException: com.sun.tools.doclets.internal.toolkit.util.DocletAbortException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.interceptor.InterceptorBinding not found
[ERROR] 
[ERROR] Command line was: /usr/java/jdk1.8.0_20/jre/../bin/javadoc @options @packages

可能な限りのことを試し、長い間 Google で検索しようとしましたが、うまくいきませんでした。人々が同様の問題を抱えていたリンクを見つけましたが、可能な解決策に関する情報はありません:

http://marc.info/?l=maven-user&m=139615350913286&w=2

http://mail-archives.apache.org/mod_mbox/maven-users/201409.mbox/%3C54101E24.6060304@gmx.de%3E (JDK8 を > update 20 に更新することを提案していますが、これは実行しましたが、問題はまだ残っています同じ)。

ヒントや誰かがこの種の動作を経験したことはありますか (残念ながら、何らかの理由で非常に「まれな」問題のように見えます)。これにはかなり必死…。

4

10 に答える 10

151

これは、依存関係で明示的に宣言されていない限り、クラスパスに欠落している でjavax.transaction.Transactional注釈が付けられている(またはクラスパス内の他のクラス)自体が原因のようです。javax.interceptor.InterceptorBinding

@Inherited
@InterceptorBinding // <-- this ONE is causing troubles
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Transactional {

と言いました:

  • javax.transaction.Transactional- javax.transaction:javax.transaction-api:1.+ (または)が付属してorg.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Finalおり、通常、トランザクション メソッドに注釈を付けるために JPA/ORM/JMS アプリで使用されます。
  • javax.interceptor.InterceptorBinding- javax.interceptor:javax.interceptor-api:1.+が付属している必要があります。ただし、上で宣言されてTransactionalいますが、通常の操作には必要なく、(このためのように見えます) JPA フレームワークの推移的な依存関係としてフェッチされていません。

その結果、JDK8 javadoc ツールはソースの処理に失敗します (いずれかが で注釈されている場合@Transactional)。

この「エラー」が見つかった場所については、より具体的にすることができます。

問題の修正javax.interceptor:javax.interceptor-api:1.+:依存関係を追加すると、問題が修正されます。

<dependency>
    <groupId>javax.interceptor</groupId>
    <artifactId>javax.interceptor-api</artifactId>
    <version>1.2.2</version>
</dependency>

注 (2020 年 1 月): 最新の (もっともらしい) バージョンは現在 1.2.2 です ( https://mvnrepository.com/artifact/javax.interceptor/javax.interceptor-apiを参照)。

于 2015-02-27T00:44:45.210 に答える
55

@kozlovda が既に言及しているように、この問題には@Transactional注釈 ( javax.transaction.Transactional) が伴います。

Spring アプリケーションの Maven 実行で上記のエラーが発生した場合、問題を解決する別の方法もありjavax.transactionますorg.springframework.transaction.annotation.Transactional

インポートを置き換えると、問題が解決しました。

于 2016-07-06T18:41:45.423 に答える
11

次の行を javadoc maven 構成に追加することもできます: <failOnError>false</failOnError>. これにより、javadoc の実行ですべてのエラーを無視し、ビルドが失敗しないように指示されます。

したがって、完全な javadoc プラグイン構成は次のようになります。

<build>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
               <source>1.8</source>
               <target>1.8</target>
           </configuration>
       </plugin>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-javadoc-plugin</artifactId>
           <configuration>
               <additionalparam>-Xdoclint:none</additionalparam>
               <failOnError>false</failOnError>
           </configuration>
       </plugin>
    </plugins>
</build>
于 2015-01-07T11:15:34.517 に答える
0

以下のように置き換えます

import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class WorkingService
于 2019-09-05T11:51:46.703 に答える
0

この少し最新の依存関係を使用して、問題を解決することもできます。

<dependency>
    <groupId>jakarta.interceptor</groupId>
    <artifactId>jakarta.interceptor-api</artifactId>
    <version>1.2.5</version>
</dependency>
于 2021-10-27T20:02:40.860 に答える
-6

Maven 依存関係を POM ファイルに追加することもできます。それは私のためにこの問題を解決しました

    <dependency>
        <groupId>net.sourceforge.cobertura</groupId>
        <artifactId>cobertura</artifactId>
        <version>2.1.1</version>
        <scope>compile</scope>
    </dependency>
于 2016-12-28T15:43:40.523 に答える