我希望基于以下链接中的示例进行一些注释处理:http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm。
然而,我想在我的Android项目中实现这个功能,但似乎我不能使用该包来支持android平台。我需要添加外部jar文件吗?还是我缺少了什么?
谢谢。
我希望基于以下链接中的示例进行一些注释处理:http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm。
然而,我想在我的Android项目中实现这个功能,但似乎我不能使用该包来支持android平台。我需要添加外部jar文件吗?还是我缺少了什么?
谢谢。
javax.annotation.processing 包在 Android 中未包含。你不需要将其包含在已编译的应用程序模块中。你只需要在构建时为你的编译器/处理器模块添加这个依赖项。因此,在你的应用程序的 build.gradle
文件中,你应该在包含注解处理器之后加入以下内容:
provided 'org.glassfish:javax.annotation:10.0-b28'
如果您使用Android Studio / Gradle,有一种更简单的方法。
我在查看以下问题的答案时发现:如何将javax.annotation.Generated添加到Java SE 5?:
对于Gradle构建,依赖应为
compile 'org.glassfish:javax.annotation:10.0-b28'
javax.annotation.processing
包在 Android 中不包含,但是 Android VM 团队描述了如何包含额外的 javax
包,这里链接可能适用于您的问题。
implementation 'org.glassfish:javax.annotation:10.0-b28'
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
build.gradle
文件中添加这两个依赖项,就可以正常工作了。compileOnly 'org.glassfish:javax.annotation:10.0-b28'
只编译依赖,并不会将该依赖打入输出的 jar 包中。对于 Kotlin DSL,您需要使用 compileOnly("org.glassfish:javax.annotation:10.0-b28")
对于 Groovy DSL,您需要使用 compileOnly 'org.glassfish:javax.annotation:10.0-b28'
我也遇到了同样的问题。 通常情况下,当我们的jdk版本为8+时,就会遇到这个问题。 因此,对于jdk8+,您只需要在build.gradle(:app)文件中添加以下依赖项。
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
它将会像魔法一样运行。请试一试!
我在ButterKnife中找到了一种方法。将其添加到build.gradle
中:
compile files(org.gradle.internal.jvm.Jvm.current().getJre().homeDir.getAbsolutePath()+'/lib/rt.jar')
javax.annotation.processing
也不在这个Glassfish依赖项中。它有正确的注释,但在javax.annotation
包中。 - TWiStErRob