公司自己搭建的框架,根据公司的要求核心代码必须加密,我只想到利用proguad混淆一下。以前在jdk1.4下用proguard4.3版用过都没有发现问题,后来升级到jdk1.6,混淆后的jar包就出问题了。主要是用了一些Annotation,hibernate自动加载JPA@Entity类的代码是在网上找的一个类做的,而Spring框架自动加载@Component类也加载不上。升级proguard到4.5,仍然不行。最后把proguard混淆后的jar包解压,再重新用jar打成jar包,发现加载都没有问题了。但又有了新的问题:利用hibernate的API的根据属性名从持久对象获取对应的值报错,这个应该是proguard把这类的private字段重命名导致的。然后在配置文件中增加了:
-keep public class mypackage.*{
private *;
}
至此,问题解决了,proguard打包和用jar打包具体有什么不同还是不清楚。
本文介绍了使用ProGuard进行代码混淆时遇到的问题及解决方案。作者在升级JDK版本后,使用ProGuard混淆代码导致某些功能失效,如Hibernate和Spring框架无法正常加载注解类。通过调整ProGuard配置,最终解决了这些问题。
1501

被折叠的 条评论
为什么被折叠?



