【问题标题】:Spring - Aspectj is not getting applied over obfuscated(YGuard) binaries(jars)Spring - Aspectj 没有被应用在混淆(YGuard)二进制文件(jars)上
【发布时间】:2016-12-31 22:58:32
【问题描述】:
我有一个罐子,我在其中使用 Aspect 对方法进行切点。该方面在这里工作正常,并且在运行时围绕方法正确执行建议。但是当我混淆这个 jar 并执行它时,它会在控制台出现以下错误:
[AppClassLoader@dad5dc] 类型 'com.test.imp.aspect.AspectObf' 的错误(没有可用的调试信息)::0 无法读取 @Aspect 的调试信息以处理切入点中的正式绑定(请使用 'javac 编译-g' 或 '' 在 Ant 中)
请帮忙。
【问题讨论】:
标签:
java
maven
aop
aspectj
obfuscation
【解决方案1】:
好吧,错误信息说明了一切,甚至告诉您如何解决问题:显然您使用了形参绑定,例如通过args()、this()、target()、@annotation() 或类似方式。显然 AspectJ 需要调试信息才能使其正常工作。因此,您应该配置 yGuard 以排除从您的角度剥离调试信息,甚至可能不混淆它,您必须自己尝试。另一种选择可能是使用本机 AspectJ 语法而不是注释样式。那么也许 AspectJ 编译器可以在编译时而不是在运行时解析参数绑定,但我不确定。