bonepeople
bonepeople
我也遇到了类似的情况,之前代码还能正常运行,在我升级了`Android Studio`至`4.2.1`版本后注解编译器就无法正常生成代码了。 ``` > Task :app:kaptDebugKotlin [WARN] Can't find annotation processor class com.yanzhenjie.andserver.processor.ControllerProcessor: javax/activation/MimeTypeParseException ``` 经过反复排查,发现`.idea/misc.xml`中的配置自动改为了`languageLevel="JDK_11"`,`.idea/compiler.xml`中的配置自动改为了``。 但同样的环境下android-Room库是可以正常生成代码的`kapt "androidx.room:room-compiler:2.3.0"` **目前未找到配置文件修改的原因及恢复的方法,需要有解决的同学能提供些方法。**
@Yooi 问题已解决,这个问题应该是Andserver没有适配jdk11而导致的,jdk11中没有`MimeTypeParseException`类,所以`com.yanzhenjie.andserver.processor.ControllerProcessor`无法正常生成Controller的代码,最终导致我们写的接口没有添加到服务器中。 在配置文件中添加以下代码后可以正常使用 ``` implementation 'javax.activation:javax.activation-api:1.2.0' ``` > You should include javax.activation:javax.activation-api:1.2.0 as an external dependency to your project to explicitly access the class javax.activation.DataSource. > > javax.activation:javax.activation-api:1.2.0 is not...
> @bonepeople > 添加了这个库 > > 还是 > > Unable to load class 'javax.activation.MimeTypeParseException'. > > This is an unexpected error. Please file a bug containing the idea.log file. >...
我觉得拦截器这个东西,不一定非要使用注解去定义,完全可以参考OkHttpClient的设置方法,在初始化的时候通过代码去注册拦截器,这样就可以通过调整注册顺序改变拦截器的执行顺序了,而且在调整的时候可以一目了然,更快的知道都用了哪些拦截器以及调用的顺序。
我们的出发角度不太一样,我是以一个简单的服务器app去考虑的,一般情况下创建一个服务器实例的时候肯定知道当前这个实例的作用,也知道该实例需要应用哪些拦截器,所以对于我来说,在创建服务器实例的时候进行全面的配置更方便管理。 在看到你的回复之前,我都不知道原来拦截器可以进行分组,更不知道这些分组要如何应用在服务器上以达到分组的目的。我也在尝试着理解使用注解方式注册拦截器的好处,我能想到的是我编写一个新的拦截器后不再需要再去server处进行注册,减少了一个步骤。在写AndServer库的时候,把拦截器的注册从Server初始化流程中拆出去也能一定程度降低Server的复杂度。 现在要在注解的基础之上添加拦截顺序功能,估计也不太好搞。如果仅仅是添加一个排序字段的话,在使用的时候就不会像现在这样方便了,即使在不分组的情况下,我创建一个新的拦截器后都要手动把所有拦截器的排序字段过一遍,确保不会重复且顺序正常,这样的改动量就会大的多了。如果采用手动注册的方法,我只需要在合适的位置添加一行注册代码即可。
另外报告一个添加拦截器过程中发现的bug 我使用`@Addition("login")`注解标记了需要登陆的接口并在登陆拦截器中进行处理,在拦截器中通过`handler.addition.stringType.contains("login")`方式判断是否需要进行处理,这个流程在需要登陆的接口上运行正常,但在不需要登陆的接口上就会出现空指针错误。 通过查看编译的代码发现,在`UserControllerAdapter`类中仅执行了`Addition addition = new Addition();`代码,而`Addition`的字段都没有进行初始化,所以在使用`stringType`的时候会出现空指针。我无法为`Addition`的字段添加默认值,所以只能在每个接口都添加`@Addition`注解,临时解决了这个问题。
I have fixed the issue and make a PullRequest You can temporarily use `implementation("com.github.bonepeople.coil-transformations:transformations:2.0.3")` instead of the original dependencies before the PR is merged.