Android中缺少javax.annotation.processing包

29
9个回答

23

javax.annotation.processing 包在 Android 中未包含。你不需要将其包含在已编译的应用程序模块中。你只需要在构建时为你的编译器/处理器模块添加这个依赖项。因此,在你的应用程序的 build.gradle 文件中,你应该在包含注解处理器之后加入以下内容:

provided 'org.glassfish:javax.annotation:10.0-b28'

5
“provided”配置已过时,已被“compileOnly”替代。 - Amir Ziarati
javax.annotation.processing也不在这个Glassfish依赖项中。它有正确的注释,但在javax.annotation包中。 - TWiStErRob

18

11

javax.annotation.processing 包在 Android 中不包含,但是 Android VM 团队描述了如何包含额外的 javax 包,这里链接可能适用于您的问题。


12
无法查看链接的解决方案。因此,我们应该引用/复制/参考而不是直接链接。 - denispyr
已更新参考链接。值得一提的是,该链接指向的指南使用了旧版本的Android(使用Ant构建脚本);您应该查看其他答案中的Gradle解决方案。 - approxiblue

9
implementation 'org.glassfish:javax.annotation:10.0-b28'
compileOnly 'com.github.pengrad:jdk9-deps:1.0'

在你的build.gradle文件中添加这两个依赖项,就可以正常工作了。

3

compileOnly 'org.glassfish:javax.annotation:10.0-b28'

只编译依赖,并不会将该依赖打入输出的 jar 包中。

运行得非常顺利! - Taslim Oseni

2

2

对于 Kotlin DSL,您需要使用 compileOnly("org.glassfish:javax.annotation:10.0-b28")

对于 Groovy DSL,您需要使用 compileOnly 'org.glassfish:javax.annotation:10.0-b28'


0

我也遇到了同样的问题。 通常情况下,当我们的jdk版本为8+时,就会遇到这个问题。 因此,对于jdk8+,您只需要在build.gradle(:app)文件中添加以下依赖项。

compileOnly 'com.github.pengrad:jdk9-deps:1.0'

它将会像魔法一样运行。请试一试!


有一个相同解决方案的答案用于相同的问题。 - Abhishek Dutt

-4

我在ButterKnife中找到了一种方法。将其添加到build.gradle中:

compile files(org.gradle.internal.jvm.Jvm.current().getJre().homeDir.getAbsolutePath()+'/lib/rt.jar')

4
这很邪恶。这样做会将整个JRE作为依赖项添加进来。 - slux83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接