2012-04-16 144 views
3

我已經混淆我的班和manualy更新了我的春XML配置的,但事情是Proguard的(春季)混淆後的反射錯誤,proguard的改變了我的setter方法的名稱和turned'em成類似如何避免與

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

所以當春天試圖通過反射setB(「東西」)調用它崩潰。 混淆時避免反射錯誤的好方法是什麼? 任何想法

回答

4

你必須避免混淆這些類。使用-keep選項來排除它們。另一種方法是使用Spring JavaConfig代替XML;這樣配置也會被混淆。

+0

是否有無論如何我可以將XML配置轉換爲Java配置手動工作時? – Genjuro 2012-04-16 13:58:20

+2

不是我知道的,對不起。 – artbristol 2012-04-16 13:59:06

+0

這是一個令人難以置信的春天項目:( – Genjuro 2012-04-16 14:08:23

2

根據該spring bean schema,屬性名稱被定義爲

的屬性的名稱,下面的JavaBean命名約定。

而且根據JavaBean specs,二傳手應該從set開始。您可以通過提供一個類名BeanInfo類來指定一個替代的setter,但我猜Proguard會混淆掉名稱以及...

+0

如果我排除所有類與getters和setters我只是結束排除整個項目,因爲廣泛使用春季注射 – Genjuro 2012-04-16 13:59:17

+1

個人我不認爲混淆是必要的值得作爲確定的編碼器的努力將能夠反編譯這些類並提取字符串並使用調試模式和反編譯器調用流程並重新編譯代碼。授予它需要更多的努力和時間,但它不會保護它。 – beny23 2012-04-16 20:20:06