4

我混淆了我的类并手动更新了我的 spring 配置 xml,但问题是,proguard 更改了我的 setter 方法的名称并将它们变成了类似的东西

public void d(a a){
b= a;
}

因此,当 spring 尝试通过反射调用 setB("something") 时,它会崩溃。混淆时避免反射错误的好方法是什么?有什么想法吗

4

2 回答 2

5

您必须避免混淆这些类。使用-keep选项排除它们。另一种方法是使用Spring JavaConfig而不是 XML;这样配置也将被混淆。

于 2012-04-16T12:10:56.597 回答
2

根据spring bean 模式,属性名称定义为

属性的名称,遵循 JavaBean 命名约定。

根据JavaBean 规范,setter 应该以set. 你可以通过提供一个classNameBeanInfo类来指定一个替代设置器来解决这个问题,但我猜 Proguard 也会混淆这个名称......

于 2012-04-16T12:29:04.350 回答