2012-06-26 2 views
3

Я сфокусирую свое приложение в банке с помощью proguard. Когда я запустить программу я получаю следующее сообщение об ошибке:ProGuard java и reflection

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflec 
t.ParameterizedType 
    at gr.analysis.synchronizer.bridge.dao.HibernateDAO.HibernateGenericDAO. 
<init>(Unknown Source) 
    at gr.analysis.synchronizer.bridge.dao.HibernateDAO.HibernateDBSynchroni 
zerDAO.<init>(Unknown Source) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou 
rce) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at  gr.analysis.synchronizer.bridge.dao.HibernateDAO.HibernateBridgeDAOFactory.instantiateDAO(Unknown Source) 
    at gr.analysis.synchronizer.bridge.dao.HibernateDAO.HibernateBridgeDAOFactory.getDBSynchronizerDAO(Unknown Source) 
    at gr.analysis.synchronizer.forms.synchronizer.SynchronizersDialog.initSynchronizers(Unknown Source) 
    at gr.analysis.synchronizer.forms.synchronizer.SynchronizersDialog.perform(Unknown Source) 
    at gr.analysis.synchronizer.forms.synchronizer.SynchronizersDialog.access$1400(Unknown Source) 
    at gr.analysis.synchronizer.forms.synchronizer.SynchronizersDialog$13$1. 
run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
ERROR [Performer] (?:?) - java.lang.RuntimeException: Can not instantiate DAO: class  gr.analysis.synchronizer.bridge.dao.HibernateDAO.HibernateDBSynchronizerDAO 

Я использую спящий режим с аннотациями и дао узором

конфиг из ProGuard является:

-dontnote 
-verbose 
-printmapping out.map 

-keepattributes *Annotation* 
-keepdirectories 

# The main entry points. 

-keep public class gr.analysis.synchronizer.ApplicationSupport { 
    public static void main(java.lang.String[]); 
} 


-keep class gr.analysis.synchronizer.**{*; } 

ответ

0

Проблема заключается в ProGuard + Java отражение, например Class.forName ("com.example.class"). ДеЫпзЬапс().

Также применим для проектов, не связанных с андроидными проектами, см .: Proguard and Reflection in Android