Community
Participate
Working Groups
Created attachment 274478 [details] Class file after transformation (which on ClassReader throws exception) I'm trying to use LTW for aspects in our project, but ArrayIndexOutOfBoundsException in aspectjweaver internals is blocking work. I added following VM option to app: -javaagent:libs/aspectjweaver.jar actual version of aspectj - 1.8.13 Oracle JDK 8u172 java.lang.ArrayIndexOutOfBoundsException: 41 at aj.org.objectweb.asm.ClassReader.readLabel(Unknown Source) at aj.org.objectweb.asm.ClassReader.a(Unknown Source) at aj.org.objectweb.asm.ClassReader.a(Unknown Source) at aj.org.objectweb.asm.ClassReader.b(Unknown Source) at aj.org.objectweb.asm.ClassReader.accept(Unknown Source) at aj.org.objectweb.asm.ClassReader.accept(Unknown Source) at org.aspectj.weaver.bcel.asm.StackMapAdder.addStackMaps(StackMapAdder.java:41) at org.aspectj.weaver.bcel.LazyClassGen.getJavaClassBytesIncludingReweavable(LazyClassGen.java:705) at org.aspectj.weaver.bcel.BcelWeaver.getClassFilesFor(BcelWeaver.java:1443) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1405) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1183) at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:527) at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:363) at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:121) 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:763) 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:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDeclaredMethods(Class.java:1975) at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:152) at org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:380) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:314) at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:198) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524) At first I thought it was javac https://bugs.openjdk.java.net/browse/JDK-8191969 problem, but it was fixed in JDK 8u172. I attached 2 class files: raw class file and after transformation.
Created attachment 274479 [details] Class file before transormation
Looks like problem in getOpenPositionsForInstruments method. If I comment some code in it - all works fine.
Sorry for bother. It's another javac bug (which not backported to jdk 8) - https://bugs.openjdk.java.net/browse/JDK-8187805