【问题标题】:Android javax.annotation.processing Package missingAndroid javax.annotation.processing 包丢失
【发布时间】:2012-03-27 21:25:29
【问题描述】:

我想根据以下链接中的例子做一些注解处理:http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm

但是,我想在我的 Android 项目中实现这个,似乎我无法在 android 平台上使用该包。我需要添加一个外部 jar 还是缺少一些东西?

谢谢。

【问题讨论】:

    标签: android annotations annotation-processing


    【解决方案1】:

    Android 中不包含 javax.annotation.processing 包。您无需将其包含在已编译的应用程序模块中。在构建期间,您只需要编译器/处理器模块的这种依赖关系。因此,在您的应用程序的build.gradle 中,您应该在包含注释处理器后添加以下内容:

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

    【讨论】:

    • 配置 'provided' 已过时,已替换为 'compileOnly'
    • javax.annotation.processing 也不在此 Glassfish 依赖项中。它有正确的注释,但在javax.annotation 包中。
    【解决方案2】:

    如果您使用 Android Studio / Gradle,有一个更简单的方法。

    我通过How do I add javax.annotation.Generated to Java SE 5?问题的答案发现了以下内容:

    对于 Gradle 构建,依赖项应该是

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

    【讨论】:

      【解决方案3】:

      Android 中不包含javax.annotation.processing 包,但Android VM 团队描述了如何包含额外的javaxhere - 它可能适用于您的问题。

      【讨论】:

      • 谢谢,这看起来正是我需要的!
      • 看不到链接的解决方案。这就是为什么我们应该引用/复制/引用而不是简单的链接
      • 更新了参考链接。作为记录,链接指南使用旧版本的 Android(带有 Ant 构建脚本);您希望其他答案中的 gradle 解决方案。
      【解决方案4】:
      implementation 'org.glassfish:javax.annotation:10.0-b28'
      compileOnly 'com.github.pengrad:jdk9-deps:1.0'
      

      在您的build.gradle 文件中添加这两个依赖项,这样就可以了。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 工作就像一个魅力!
        【解决方案6】:

        只需添加 compile 'javax.annotation:javax.annotation-api:1.2' 就可以了。

        查看所有可用版本:https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            我在黄油刀中找到了一种方法。将此添加到build.gradle

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

            【讨论】:

            • 这是邪恶的。这样您就可以将整个 jre 添加为依赖项
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-12
            • 1970-01-01
            • 2013-08-26
            • 1970-01-01
            • 1970-01-01
            • 2016-07-04
            • 1970-01-01
            相关资源
            最近更新 更多