问题标签 [annotation-processor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用自定义运行时注释设置属性值
我正在尝试提出一个自定义注释,想看看我的用例是否适合使用自定义注释的允许方式。
我想复制 Spring @Value 所做的,但不是从属性中读取属性,而是我想要自定义的东西。
我希望在注释处理器中,我解密值并设置为字段 someEncryptedValue。
我得到了变量,它的返回类型和所有东西,但不确定如何从这个注释中设置变量的值,即使我弄清楚了,这是使用自定义注释的好方法。
*注意:这可能是示例,我打算做的比上面的示例要复杂得多。
android - Android apt 插件不兼容,请改用“annotationProcessor”配置
嗨,我正在尝试在我的应用程序中实现imgly SDK,但是当我在 Build.Gradle 文件中添加 sdk 编译时出现此错误。我尝试添加annotationProcessor "com.google.dagger:dagger-compiler:2.6"
但仍然无法正常工作
错误:android-apt 插件与 Android Gradle 插件不兼容。请改用“annotationProcessor”配置。
java - MapStruct 中的嵌套目标(使用 Lombok)不能流畅地工作
我正在尝试使用 Mapstruct 和 Lombok 进行一些嵌套映射。根据他们的最新规范,mapstruct 1.2 与 Lombok 一起开箱即用。
这是我的代码:
源类
目标类
映射器
正如所写的那样,MapStruct 现在可以开箱即用地与 Lombok 一起使用,这意味着映射代码应该可以工作。但相反,它给了我一个编译错误“它找不到 setter setTargetPrime”。
但令人惊讶的是,如果我只为 targetPrime 添加 getter/setter 并保持原样,那么它在 Lombok 上工作得很好。
例如。
更新的目标
然后运行这个
我将获得所有映射的成功输出。
输出
Target(targetString=Testing, integer=10, targetPrime=TargetPrime(aLong=15, string=AutoScanned, targetPrimePrime=TargetPrime(value=12345)))
因此,由于我的团队非常喜欢 Lombok,因此我无法从我正在从事的所有项目中删除 Lombok,因此 Lombok 是否真的可以开箱即用地进行映射(可变对象),如果是,我在做什么错在上面的代码中?
android - 现在必须显式声明 Kapt 注释处理器
我正在尝试开发 Kotlin AnnotationProcessor 库,但我不知道为什么会出现此错误:
错误:任务“:app:javaPreCompileDebug”的执行失败。
> 现在必须显式声明注释处理器。发现编译类路径的以下依赖项包含注释处理器。请将它们添加到 annotationProcessor 配置中。
- compiler.jar (project :compiler)
或者,设置 android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true 以继续之前的行为。请注意,此选项已弃用,将来将被删除。
有关更多详细信息,请参阅https://developer.android.com/r/tools/annotation-processor-error-message.html。
我知道如上所述我可以使用includeCompileClasspath = true
并且我尝试过它并且它工作正常。但正如所提到的,它已被弃用,很快被删除,并且预计将用于您根据 android doc 不使用的库。
所以我正在寻找更清洁的解决方案。
应用模块
你好.kt
构建.gradle
依赖项{ kapt project(":compiler") compileOnly project(":compiler") implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" }
编译器模块
HelloGenerated.kt
我也试过没有 Target 和 Retention 并且有同样的问题
HelloGenerator.kt
构建.gradle
资源/META-INF/services/javax.annotation.processing.Processor
我现在正在寻找一种更清洁的解决方案,而不仅仅是includeCompileClasspath = true
.
一些信息:
- kapt 效果很好,我将它与 Dagger 和 BindingAdapter 一起使用没有任何问题
- 我的注释处理器在构建时处理得很好,日志中的消息是我设置时的好消息
includeCompileClasspath = true
非常感谢
java - 在 Gradle 4.6 版中应用 annotationProcessor
我很难建立我的项目。我正在使用匕首 2,因此我需要使用注释处理器。我使用带有以下版本的 gradle wrapper 4.6 版:
查看文档,他们在 4.6 中添加了开箱即用的注释处理器支持(无需使用任何插件)。我正在尝试使用相同的方法。现在,由于我没有设置 annotationProcessorPath,它应该自动使用构建路径,因为默认值是null - annotationProcessorPath 文档。但似乎情况并非如此。我的 Dagger 类正在build/classes/java/main中正确生成,但它们没有被拾取。为了构建类,我在本地安装了 Java 8(控制台输出):
我正在使用以下命令运行 gradle:./gradlew clean build
为了证明我使用的是正确的版本,我运行了命令:./gradlew -version
并得到了这个控制台输出:
因此,在运行 build 时./gradlew build
,我得到以下输出:
这是应用程序文件:
任何想法我做错了什么?我可以看到在xyz.blackmonster.resume.config中生成的匕首文件。Gradle 将需要使用那些已编译的文件,但由于某种原因不会“找到”这些文件。我将不胜感激任何有价值的意见。
java - 调试我的 Java 注释处理器时断点未命中 IntelliJ
我按照Hannes Dorfmann 的教程编写了一个 Java 注释处理器。我的项目使用 Maven。当我尝试按照本文中的建议对其进行调试时,mvnDebug
一切正常,除了我的断点没有在 IntelliJ 中命中。
- 我可以从命令行运行
mvnDebug clean compile
。 - 我可以使用远程调试目标附加 IntelliJ 的调试器。
- 我的注释处理器运行正常。我已
processingEnv.getMessager().printMessage
在该方法中添加了语句,process
并且它们已正确记录。 - 唯一不起作用的是断点。我设置的断点都没有被命中。
我尝试了几件事:更改远程调试目标的类路径,不同版本的 maven-compiler-plugin,该插件的不同选项(fork,...),没有任何帮助。
我错过了什么?
java - Android studio 3.1 无法识别 jar 注释处理
我正在尝试在我的 android studio 项目中实现我自己的注释处理器。在我将这个简单的行添加到 build.gradle 依赖块之前,一切都运行良好并且正在编译:
那时我在编译时收到此错误:
找不到:处理器:。要求:project :app 在 build.gradle 文件中搜索
我遵循了无尽的教程,似乎没有任何帮助。我最近刚刚升级到 AS 3.1,并认为它可能相关?
这是项目结构:(请注意 - 在这里我将注释处理器添加为 jar 文件。我还附加了一个图像,试图将其作为不同的模块和相同的结果)
这是一个不同的我正在尝试添加它 - 在同一个项目中使用不同的模块创建注释处理器,但仍然不行:
图片中的一些额外信息...项目结构:
应用程序构建:
处理器构建:
注解:
主要活动:
处理器实现:
android - 无法在 Kotlin 中构建注释处理器
我目前正在尝试在 Kotlin 中为 Android 编写注释处理器。项目结构如下:
项目/build.gradle
注释/build.gradle
示例/build.gradle
注释.kt
注释处理器.kt
使用 kapt 构建中断 sample:javaPreCompileDebug 并显示以下消息:
当我用 annotationProcessor 替换 kapt 时,构建在 sample:transformClassesWithInstantRunForDebug 上中断,并显示以下消息:
当我禁用即时运行时,一切正常。
我现在的问题是,我的配置哪里出错了?我遵循了这样的示例项目,我看到的唯一重大区别是注释模块分为两个(运行时和编译器)。但错误消息表明 Kotlin 或 Instant Run 存在问题。
java - 使用多个 AnntationProcessor 找不到 FluentFuture 类
我正在使用 Maven 和自定义 AnnotationProcessor 开发一个简单的 Java 8 项目。
如果我只使用Dagger 2 .15 或我的 AnnotationProcessor,它运行良好,但如果我同时使用它们,maven 构建将失败并出现以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project MyProject: Fatal error compiling: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FluentFuture: com.google.common.util.concurrent.FluentFuture -> [Help 1]
我尝试从存储库(版本 r05、19.0、24.1-jre)导入com.google.common.util.concurrent.FluentFuture
类,但没有成功。com.google.guava.guava
项目结构:
- 有一个Maven项目,里面有注解,还有两个AnnotationProcessor(一个只验证,另一个生成源代码)(根据这篇文章)
- 还有另一个 Maven 项目,它使用这个项目作为依赖项。在那我想使用 Dagger 2 进行依赖注入(我导入它就像它在 Dagger 2 页面中的描述中一样)。
我能做些什么?
谢谢您的帮助!
android - 如何在 android.mk 中使用 annotationProcessor
我只想使用bufferknife
并且drag2
在我的系统应用程序中,我已经使用命令构建了我的应用程序mm
。
我已经尝试了我能找到的所有可能的方法,但都失败了!我只Android.mk
通过谷歌搜索找到了以下内容: