问题标签 [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.
android - annotationProcessor + androidTest + dagger2
对于插桩测试,我有一个TestApplication
创建一个TestComponent
,但不再生成文件(Error:/xxx/TestApplication.java:16: The import.xxx.DaggerTestApplicationComponent cannot be resolved
)。我无法确定根本原因。我尝试过不同的 Android Studio(2.2、2.1.2)、不同的 gradle 插件(2.2.0-alpha6、5、4)和不同版本的 dagger(2.2 到 2.6)。
我应该使用androidTestAnnotationProcessor
吗?(以前不是这样的)
编辑:要使用匕首 2.6,需要添加classpath 'com.google.guava:guava:19.0'
更新: a 有问题Module
,因此Component
无法创建。但是,使用千斤顶(即使有调试选项),我看不到问题。现在,恢复到 java 7,gradle 插件 2.1.2。这样,无需指定哪个 guava 版本,并且可以使用所有最新的库(dagger 2.6、butterknife 8.2.1、apt 1.8)
java - 如何使用 JavaPoet 生成调用超类构造函数的构造函数
我想生成一个使用 JavaPoet 扩展其他类的类。
例如我有这个类:
我想生成这样的新类:
但是,我在 JavaPoet 中没有看到任何现成的 API 来创建调用超类构造函数的构造函数。如何做到这一点以及最佳实践是什么?
java - 当 RoundEnvironment 指向测试源时如何扫描主要源中的注释
我创建了一个@EnableEntityProcessing
打算在测试中使用的注释(src/test/java)。我还创建了关联的注释处理器EnableEntityProcessingProcessor
。
这样做的目的EnableEntityProcessingProcessor
是扫描@Entity
在 src/main/java 中找到的 (javax.persistence.Entity) 注释,并根据这些注释生成代码。我希望代码在测试资源下生成,因为它只用于测试。
主要问题是RoundEnvironment
对象指向测试代码,因为支持的注释是@EnableEntityProcessing
(仅在测试中使用)。
从代码示例中,您可以看到我正在扫描带有 注释的元素EnableEntityProcessing
,如果其中一个存在,那么我想查找带有注释的类Entity
。问题是 roundEnv 没有找到它们,因为它链接到测试源。
java - 我如何测试注释处理器生成的无 .java 源?
我一直在使用 Java APT 进行一些注释处理,并且我能够按照 TDD 实践从带注释的类中生成 .java 文件,只要我生成 .java 文件,一切都做得很好,为了测试我使用了谷歌-compile-testing,这是我对生成的源代码进行测试的方式:
有了这个,我能够检查并验证生成的 .java 文件。
但后来我想生成一些 .html 文件,并且我希望能够测试我生成的 html 内容。
但使用上述方法失败,因为它需要 .java 文件,并引发以下断言错误
该错误表明我应该生成 .java 文件,但我知道使用 APT 您可以生成任何类型的源代码,但我认为这里的问题在于我为测试所做的调用或参数,我一直在试图弄清楚如何使用google-compile-testing测试没有 java 生成的源代码,但没有运气。
有人知道如何使用google-compile-testing测试 .html 或其他 java 源的任何其他内容吗?
android - 错误:无法解决:annotationProcessor
gradle
这是我在向我的 android 项目添加新依赖项时遇到的以下错误。而且这个错误不是项目特定的。如果我在任何其他 android 项目中添加插件,我会遇到同样的错误
添加任何第三方插件时出错
我还发布了我的项目应用级gradle
模块截图
Annotation Processor
我什至在设置中启用了。仍然没有解决办法。请帮忙。
java - 如何使用@Target(ElementType.TYPE_USE) 处理注解?
我正在实现一个注释处理器,以确保标有注释的元素是实现某个接口的类的实例,或者是实现某个接口的类型的使用:
对于带注释的元素,必须在方法执行后创建一个日志条目(使用 AOP)。例子:
Report
如果实现了,则必须创建日志条目Auditable
;如果没有,则抛出运行时异常(哎呀,我忘了实现接口!)。因此,注释处理器有助于在编译时捕捉程序员的错误。到目前为止,我已经成功地检查了参数中的所有用途,但没有检查类型用途。注释处理器的相关代码如下:
只识别带有 kind 的带注释的元素ElementKind.PARAMETER
(process() 循环中的第一行只打印一行 for 'newReport'
)如何检查带注释的类型是否实现Auditable
?没有 " ElementKind.TYPE_USE
" 常量可以使用。我一直无法找到任何有关此事的信息。感谢您的关注。
java - 注释处理顺序 - 找不到符号
我有的:
- 我编写了一个
@ViewModel
生成类的注释处理器ViewModel_<annotated class name>
。 - 我已经编写了另一个注释处理器
@Retainable
,它为带有注释的字段生成构建器@Retainable
。
我的实现基于这篇文章:
http://blog.stablekernel.com/the-10-step-guide-to-annotation-processing-in-android-studio
但我有两个注释处理器。
我的问题:
如果我ViewModel_<annotated class name>
用我的@Retainable
注释注释类型的字段。
编译器抱怨:
错误:(33, 15) 错误: 找不到符号类 ViewModel_<annotated class name>
但,
如果我用匕首注释这个字段@Inject
而不是我的@Retainable
一切都在编译。
问题:
我的注释和匕首有什么区别?我该怎么做才能让它发挥作用?
android - annotationprocessor 和 apt 配置等效
我正在使用AndroidAnnotaion
,但由于 Android Studio 2.3 和 Gradle 2.3.0,他们说android-apt
已经过时了。而且annotationProcessor
是新的。所以,我想知道如何annotationProcessor
像apt
以前一样进行配置。
如果我误解了什么,请帮忙。
那么,之前...
现在...
java - 在 JavaPoet 中将数组作为注释参数的值传递
使用JavaPoet我试图用一个具有数组作为参数值的注释来注释一个类,即
我使用AnnotationSpec.builder
及其addMember()
方法:
android - Android Studio 2.3 更新:警告:使用不兼容的插件进行注释处理:android-apt。这可能会导致意外行为
所以,我已经阅读了我可以在这个网站上找到的关于这个问题的所有问题。我还与一位有类似问题的开发人员在评论中聊天,他能够解决这个问题。
我没有 apt 或 annotationProcessor 在我的 gradle 脚本中写任何地方。
我的代码中没有写 android-apt 这个词。我什至继续检查了所有的图书馆。这包括在我的项目中。
这是一个非常大的问题,需要解决。
我在下面附上修改后的 build.gradle,请建议: