Bug 567669 - [java 11] java.lang.IllegalArgumentException at aj.org.objectweb.asm.ClassReader.readConst(ClassReader.java:3821)
Summary: [java 11] java.lang.IllegalArgumentException at aj.org.objectweb.asm.ClassRea...
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: LTWeaving (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 10
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-10-07 06:49 EDT by Andrei Ivanov CLA
Modified: 2020-10-07 06:51 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrei Ivanov CLA 2020-10-07 06:49:55 EDT
I've ran into something similar to #565254, just that using version 1.9.6 (which is not present as an option in the field above) and Java 11 OpenJ9 (jdk-11.0.8+10_openj9-0.21.0)

AspectJ Internal Error: unable to add stackmap attributes. null
java.lang.IllegalArgumentException
        at aj.org.objectweb.asm.ClassReader.readConst(ClassReader.java:3821)
        at aj.org.objectweb.asm.ClassReader.readCode(ClassReader.java:2392)
        at aj.org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1488)
        at aj.org.objectweb.asm.ClassReader.accept(ClassReader.java:718)
        at aj.org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
        at org.aspectj.weaver.bcel.asm.StackMapAdder.addStackMaps(StackMapAdder.java:45)
        at org.aspectj.weaver.bcel.LazyClassGen.getJavaClassBytesIncludingReweavable(LazyClassGen.java:764)
        at org.aspectj.weaver.bcel.BcelWeaver.getClassFilesFor(BcelWeaver.java:1463)
        at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1425)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1195)
        at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:551)
        at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:387)
        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:116)
        at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:51)
        at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
        at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
        at java.base/java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.base/java.lang.ClassLoader.defineClassInternal(ClassLoader.java:476)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:437)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:1110)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:898)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:806)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:764)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1078)
        at java.base/java.lang.Class.forNameImpl(Native Method)
        at java.base/java.lang.Class.forName(Class.java:412)
        at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
        at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
        at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
        at java.base/sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:440)
        at java.base/sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:421)
        at java.base/sun.reflect.annotation.AnnotationParser.lambda$parseClassArray$0(AnnotationParser.java:719)
        at java.base/sun.reflect.annotation.AnnotationParser$$Lambda$29/0000000000000000.get(Unknown Source)
        at java.base/sun.reflect.annotation.AnnotationParser.parseArrayElements(AnnotationParser.java:747)
        at java.base/sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:718)
        at java.base/sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:532)
        at java.base/sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:356)
        at java.base/sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:287)
        at java.base/sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:121)
        at java.base/sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:73)
        at java.base/java.lang.Class.getAnnotationCache(Class.java:2794)
        at java.base/java.lang.Class.getAnnotation(Class.java:2442)
        at java.base/java.lang.Class.isAnnotationPresent(Class.java:2852)
        at org.hibernate.annotations.common.reflection.java.JavaAnnotationReader.isAnnotationPresent(JavaAnnotationReader.java:33)
        at org.hibernate.annotations.common.reflection.java.JavaXAnnotatedElement.isAnnotationPresent(JavaXAnnotatedElement.java:43)
        at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.categorizeAnnotatedClass(AnnotationMetadataSourceProcessorImpl.java:121)
        at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.<init>(AnnotationMetadataSourceProcessorImpl.java:110)
        at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.<init>(MetadataBuildingProcess.java:155)
        at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:149)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255)
        at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)


The issue is with a JPA entity listener annotated with `org.springframework.beans.factory.annotation.Configurable`, because the JPA entity manager factory is also initialized using the standard JPA bootstrap, so I want it to have its dependencies injected in that case too.

@Configurable
public class ModelRevisionListener {
	private String modelRevision;

	@Inject
	public void setModelRevision(String modelRevision) {
		this.modelRevision = modelRevision;
	}

	@PrePersist
	public void prePersist(AuditLogEventEntity entity) {
		entity.setModelRevision(modelRevision);
	}
}
Comment 1 Andrei Ivanov CLA 2020-10-07 06:50:20 EDT
The weird part is that running the tests from IntelliJ IDEA works fine