question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

GenericSignatureFormatError when using JDK 17 and Groovy

See original GitHub issue

Description

[NOTE]: When using New Relic Agent with JDK 17 and groovy, it raises GenericSignatureFormatError at startup.

Expected Behavior

[NOTE]: Not to throw the exception

Troubleshooting or NR Diag results

Im attaching a simple repro, created from scratch using spring initilizr.

Steps to Reproduce

Download NR agent 7.4.0

$ cat run.sh ./gradlew build wget -O newrelic-agent-7.4.0.jar https://repo1.maven.org/maven2/com/newrelic/agent/java/newrelic-agent/7.4.0/newrelic-agent-7.4.0.jar NEW_RELIC_APP_NAME=‘Name’ NEW_RELIC_LICENSE_KEY=‘’ java -javaagent:newrelic-agent-7.4.0.jar -jar build/libs/demo-0.0.1-SNAPSHOT.jar $ edit run.sh to add a new relic license key $ run.sh

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'b' defined in URL [jar:file:/home/becho/Downloads/demo/build/libs/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/example/demo/B.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.example.demo.B]: Constructor threw exception; nested exception is java.lang.reflect.GenericSignatureFormatError: Signature Parse error: expected a class type Remaining input: java/util/concurrent/CompletableFuture at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.12.jar!/:5.3.12] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.12.jar!/:5.3.12] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.6.jar!/:2.5.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.6.jar!/:2.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.6.jar!/:2.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.6.jar!/:2.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.6.jar!/:2.5.6] at org.springframework.boot.SpringApplication$run.call(Unknown Source) ~[na:na] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-3.0.9.jar!/:3.0.9] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-3.0.9.jar!/:3.0.9] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148) ~[groovy-3.0.9.jar!/:3.0.9] at com.example.demo.DemoApplication.main(DemoApplication.groovy:28) ~[classes!/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[demo-0.0.1-SNAPSHOT.jar:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[demo-0.0.1-SNAPSHOT.jar:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[demo-0.0.1-SNAPSHOT.jar:na] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) ~[demo-0.0.1-SNAPSHOT.jar:na] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.example.demo.B]: Constructor threw exception; nested exception is java.lang.reflect.GenericSignatureFormatError: Signature Parse error: expected a class type Remaining input: java/util/concurrent/CompletableFuture at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.3.12.jar!/:5.3.12] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326) ~[spring-beans-5.3.12.jar!/:5.3.12] ... 28 common frames omitted Caused by: java.lang.reflect.GenericSignatureFormatError: Signature Parse error: expected a class type Remaining input: java/util/concurrent/CompletableFuture at java.base/sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:124) ~[na:na] at java.base/sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:301) ~[na:na] at java.base/sun.reflect.generics.parser.SignatureParser.parseClassSignature(SignatureParser.java:213) ~[na:na] at java.base/sun.reflect.generics.parser.SignatureParser.parseClassSig(SignatureParser.java:156) ~[na:na] at java.base/sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:57) ~[na:na] at java.base/sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:41) ~[na:na] at java.base/sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:74) ~[na:na] at java.base/sun.reflect.generics.repository.GenericDeclRepository.<init>(GenericDeclRepository.java:49) ~[na:na] at java.base/sun.reflect.generics.repository.ClassRepository.<init>(ClassRepository.java:53) ~[na:na] at java.base/sun.reflect.generics.repository.ClassRepository.make(ClassRepository.java:70) ~[na:na] at java.base/java.lang.Class.getGenericInfo(Class.java:3263) ~[na:na] at java.base/java.lang.Class.getTypeParameters(Class.java:962) ~[na:na] at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:56) ~[na:na] at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:52) ~[na:na] at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:100) ~[na:na] at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105) ~[na:na] at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140) ~[na:na] at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) ~[na:na] at java.base/sun.reflect.generics.repository.MethodRepository.computeReturnType(MethodRepository.java:75) ~[na:na] at java.base/sun.reflect.generics.repository.MethodRepository.getReturnType(MethodRepository.java:66) ~[na:na] at java.base/java.lang.reflect.Method.getGenericReturnType(Method.java:295) ~[na:na] at java.base/java.lang.reflect.Method.specificToGenericStringHeader(Method.java:488) ~[na:na] at java.base/java.lang.reflect.Executable.sharedToGenericString(Executable.java:161) ~[na:na] at java.base/java.lang.reflect.Method.toGenericString(Method.java:483) ~[na:na] at java.desktop/java.beans.MethodRef.set(MethodRef.java:46) ~[na:na] at java.desktop/java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:119) ~[na:na] at java.desktop/java.beans.MethodDescriptor.<init>(MethodDescriptor.java:74) ~[na:na] at java.desktop/java.beans.MethodDescriptor.<init>(MethodDescriptor.java:58) ~[na:na] at java.desktop/java.beans.Introspector.getTargetMethodInfo(Introspector.java:1030) ~[na:na] at java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:446) ~[na:na] at java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:195) ~[na:na] at groovy.lang.MetaClassImpl.lambda$addProperties$8(MetaClassImpl.java:3429) ~[groovy-3.0.9.jar!/:3.0.9] at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) ~[na:na] at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3429) ~[groovy-3.0.9.jar!/:3.0.9] at groovy.lang.MetaClassImpl.reinitialize(MetaClassImpl.java:3411) ~[groovy-3.0.9.jar!/:3.0.9] at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3404) ~[groovy-3.0.9.jar!/:3.0.9] at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:273) ~[groovy-3.0.9.jar!/:3.0.9] at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:315) ~[groovy-3.0.9.jar!/:3.0.9] at com.example.demo.B.$getStaticMetaClass(DemoApplication.groovy) ~[classes!/:na] at com.example.demo.B.<init>(DemoApplication.groovy) ~[classes!/:na] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na] at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.12.jar!/:5.3.12] ... 30 common frames omitted

Your Environment

java -version openjdk version “17” 2021-09-14 OpenJDK Runtime Environment (build 17+35-2724) OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:5 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
meiaocommented, Dec 6, 2021

This relates to #526.

For now the workaround is to disable CompletableFuture instrumentation by adding the following to your config file, under the common stanza:

  class_transformer:
    com.newrelic.instrumentation.java.completable-future-jdk8u40:
      enabled: false
0reactions
meiaocommented, Nov 29, 2021

Closing this as a duplicate of #526

Read more comments on GitHub >

github_iconTop Results From Across the Web

GenericSignatureFormatError when using Java reflection on a ...
When I use memberProperties of an object, created in test, which is named with spaces, I run into java.lang.reflect.GenericSignatureFormatError. My code:.
Read more >
JDK-8282241 Invalid generic signature for redefined classes
We use ASM for bytecode manipulation. We instrument CompletableFuture, and since Java 17 it has returned an improper value when Class#getGenericSignature0() ...
Read more >
JDK 17 Release Notes, Important Changes, and Information
Introduction. These notes describe important changes, enhancements, removed APIs and features, deprecated APIs and features, and other information about JDK ...
Read more >
GenericSignatureFormatError Signature Parse error
I read about solving this problem but solution with change jdk to http://jdk8.java.net/lambda/ and still don't work. Any idea? Caused by: java.
Read more >
Release notes for Groovy 4.0
Where appropriate, related classes or APIs of these features may be annotated with the @Incubating annotation. Caution should be exercised when using incubating ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found