我将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
注释参数的混淆问题?注释本身不会被混淆,它仍然引用原始的类名称,这些名称以字符串值的形式编写。我还试图混淆元数据注释,但无济于事。