2016-01-12 5 views
0

Я использую AspectJ в проекте, над которым я работаю. В рамках проекта я пытался использовать «maven-shade-plugin» и «jarjar-maven-plugin», чтобы переместить классы из одной банки в другую.Aspectj выбрасывает «org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute» exception after Class Relocation

В обоих случаях, когда я пытался использовать сгенерированный JAR, AspectJ не удалось за исключением следующего:

Jan 12, 2016 7:18:52 PM org.aspectj.weaver.tools.Jdk14Trace error 
SEVERE: register definition failed 
java.lang.RuntimeException: Problem processing attributes in io.myproject.MyAspect 
    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:387) 
    at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:162) 
    at org.aspectj.weaver.bcel.BcelWorld.buildBcelDelegate(BcelWorld.java:410) 
    at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:405) 
    at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:107) 
    at org.aspectj.weaver.World.resolveToReferenceType(World.java:478) 
    at org.aspectj.weaver.World.resolve(World.java:319) 
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:159) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171) 
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340) 
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345) 
    at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:319) 
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113) 
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54) 
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188) 
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495) 
Caused by: org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute (length:530)org.aspectj.weaver.BCException: Bad type signature log 


    at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:137) 
    at org.aspectj.weaver.bcel.Utility.readAjAttributes(Utility.java:101) 
    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:383) 
    ... 30 more 

[[email protected]] warning register definition failed -- (RuntimeException) Problem processing attributes in io.myproject.MyAspect 
Problem processing attributes in io.myproject.MyAspect 
java.lang.RuntimeException: Problem processing attributes in io.myproject.MyAspect 
    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:387) 
    at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:162) 
    at org.aspectj.weaver.bcel.BcelWorld.buildBcelDelegate(BcelWorld.java:410) 
    at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:405) 
    at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:107) 
    at org.aspectj.weaver.World.resolveToReferenceType(World.java:478) 
    at org.aspectj.weaver.World.resolve(World.java:319) 
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:159) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304) 
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171) 
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340) 
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345) 
    at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:319) 
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113) 
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54) 
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188) 
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495) 
Caused by: org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute (length:530)org.aspectj.weaver.BCException: Bad type signature log 


    at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:137) 
    at org.aspectj.weaver.bcel.Utility.readAjAttributes(Utility.java:101) 
    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:383) 
    ... 30 more 

Я признателен, если вы могли бы указать мне на то, что я делаю неправильно.

Спасибо, Надав

+0

Если вы хотите получить быстрый ответ, может быть, это хорошая идея, чтобы поставить автономный минимальный пример, который воспроизводит проблему. Тогда другие люди могут помочь вам. В настоящее время только те люди смогут помочь вам, кто видел то же самое поведение, которое вы только что описали, что, я думаю, очень редко. –

ответ

0

В конце концов, я не использовать Maven-jarjar-плагин, ни Maven-плагин тени. Я сам использовал JAR JarJar, и это решило проблему (поскольку при компиляции он не модифицирует JAR с AspectJ).

Ответ на следующий вопрос описывает решение:

Relocating fastxml.jackson classes to my.package.fastxml.jackson