简体   繁体   English

AspectJ加载时织入用于签名罐

[英]AspectJ load-time weaving for signed jars

Does anybody success in using AspectJ load-time weaving with signed jars? 是否有人成功使用带有签名的jar的AspectJ加载时编织?

I got an exception and have no idea how to fix it (tested with AspectJ 1.6.8-16.10): 我有一个例外,不知道如何解决它(使用AspectJ 1.6.8-16.10测试):

Exception in thread "main" java.lang.NoClassDefFoundError: com/package/clazz$AjcClosure1
    at com.package.test.main(test.java:55)
Caused by: java.lang.ClassNotFoundException: com.package.clazz$AjcClosure1
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 1 more

Frankly speaking I event not sure if it's technically possible, but I know that similar issue (using dynamically generated java code from signed java classes) was done for Hibernate project (ie using Javassist instead of CGLIB). 坦率地说,事件我不确定它是否在技术上可行,但我知道类似的问题(使用来自已签名的java类的动态生成的java代码)是为Hibernate项目完成的(即使用Javassist而不是CGLIB)。 Details are here . 细节在这里

The simular problem is described in https://bugs.eclipse.org/bugs/show_bug.cgi?id=328099 and fixed in AspectJ 1.6.12. 类似的问题在https://bugs.eclipse.org/bugs/show_bug.cgi?id=328099中描述,并在AspectJ 1.6.12中修复。 AspectJ sometimes generates closure classes during weaving and these must be defined with the same protection domain as the jar that gave rise to them. AspectJ有时会在编织期间生成闭包类,并且必须使用与生成它们的jar相同的保护域来定义它们。 In 1.6.12.M1 this should now work correctly. 在1.6.12.M1中,现在应该可以正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM