JDK8 – 当尝试使用Maven生成javadoc时,错误“javax.interceptor.InterceptorBinding未找到的类文件”javadoc plugin

我使用JDK8(尝试它在我的Eclipse工作区与Win x64 u25 JDK在Linux上由Jenkins发布 – 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

我试过一切可能,并试图在谷歌上搜索了很长时间,但没有成功。
我发现链接,人们有类似的问题,但没有任何有关可能的解决方案的信息:

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到>更新20,我做了,但问题仍然相同)。

任何提示或任何人也经历过这种行为(不幸的是,它看起来相当“罕见”的问题,由于某种原因)?
非常绝望这个…

这似乎是由于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。依赖项修复问题。

http://stackoverflow.com/questions/27808734/jdk8-error-class-file-for-javax-interceptor-interceptorbinding-not-found-whe

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:JDK8 – 当尝试使用Maven生成javadoc时,错误“javax.interceptor.InterceptorBinding未找到的类文件”javadoc plugin

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享