kotlin-reflect with proguard 会导致反射错误

ros*_*euz 8 proguard kotlin spring-boot kotlin-reflect

我在 Spring Boot 应用程序代码中使用 ProGuard。升级到 Spring Boot 2 后,我无法再启动我的应用程序。

Spring Boot 2 使用 kotlin-reflect 创建 bean,它kotlin.Metadata在反射过程中使用注解。此注释具有未混淆的值,因此 kotlin-reflect 正在寻找具有原始名称的方法。并抛出以下异常:

kotlin.reflect.jvm.internal.KotlinReflectionInternalError: Could not compute caller for function: public constructor ProjectService(...

ProjectService被混淆为F,因此没有这样的构造函数。

当我保留类名时,我在其他地方也有同样的问题:

kotlin.reflect.jvm.internal.KotlinReflectionInternalError: Could not compute caller for function: public open fun addRole(...

有没有办法修复kotlin.Metadata注释参数的混淆?注释本身没有被混淆,它仍然引用写为字符串值的原始类名。我也试图混淆元数据注释无济于事。