我将 ProGuard 用于我的 Spring Boot 应用程序代码。升级到 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
注释参数的混淆?注释本身没有被混淆,它仍然引用原始类名,这些类名被写为字符串值。我也试图混淆元数据注释无济于事。