he is coding

Java注解处理器报错:服务配置文件不正确

| Comments

最近在研究java注解处理器,遇到了这样一个错误

1
错误: 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: Provider com.google.auto.service.processor.AutoServiceProcessor could not be instantiated: java.lang.NoClassDefFoundError: com/google/common/collect/Multimap时抛出异常错误

按照butterknife的思路,我新建了一个java lib,依赖如下

1
2
3
compile 'com.squareup:javapoet:1.8.0’ 用于方便的生成java文件
compile 'com.google.auto.service:auto-service:1.0-rc2’ 用于方便的注册我的处理器
compile 'com.google.auto:auto-common:0.6'

由于项目的原因,需要将依赖的类库尽量以jar或者aar的形式加入到项目中,但是发现如果将com.google.auto.service:auto-service:1.0-rc2以jar包的形式引入则会报标题所示的错误

最后分析如下:
其中auto-service不能以jar包的形式放到lib中,必须是依赖形式引入,考虑原因:auto-service本身也是一个注解生成器,所以需要在编译之前运行,所以gradle在校验的时候, auto-service已经在运行,为我的processor生成meta-info文件。。。

Comments