AspectJ load-time di tessitura per vasi firmati
-
29-09-2019 - |
Domanda
Il successo nessuno in utilizzando AspectJ load-time di tessitura con vasi firmati?
ho ottenuto un'eccezione e non hanno idea di come risolvere il problema (provato con 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
Francamente evento non sicuro se è tecnicamente possibile, ma so che problema simile (utilizzando il codice Java generato dinamicamente da classi Java firmati) è stato fatto per il progetto Hibernate (vale a dire utilizzando Javassist invece di CGLIB). Dettagli sono qui .
Soluzione
Il problema simular è descritta in https://bugs.eclipse.org/ bug / show_bug.cgi? id = 328099 e fissati in AspectJ 1.6.12. AspectJ talvolta genera classi di chiusura durante la tessitura e questi deve essere definita con lo stesso dominio di protezione come il vaso che ha originate. In 1.6.12.M1 questo dovrebbe funzionare correttamente.