在我们准备分发时,我正在通过 proguard/maven 向 Java 应用程序添加混淆。在此过程中,它会出错:
Note: ...eventlib.EventManager accesses a declared method 'getHandlerList()' dynamically
然后它列出了十几个具有该方法的类,Maybe this is...
并建议使用它-keep
来避免该问题。
当我添加-keep public class my.package.info.eventlib.HandlerList { *; }
到构建过程中时,错误消失了,但我看到了以下通知:
[proguard] Note: the configuration keeps the entry point 'events.TransactionEvent { TransactionEvent(my.package.info.inventory.Inventory,my.package.info.inventory.Inventory$TransactionType,my.package.info.inventory.ItemDefinition,short); }', but not the descriptor class 'my.package.info.inventory.Inventory'
当我运行应用程序时,它会出现 NPE 错误(在没有混淆的情况下运行时不会这样做):
Caused by: java.lang.NullPointerException
at java.util.EnumMap.<init>(EnumMap.java:113)
at my.package.info.eventlib.HandlerList.<init>(Unknown Source)
at my.package.info.events.CollisionEvent.<clinit>(Unknown Source)
这一切都与事件有关。如果不告诉 proguard 将所有内容与他们联系起来,我该如何解决这个问题?
这是原始错误的完整示例:http: //pste.me/m9BsY/
事件系统基于lahwran的fastevents