You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It seems that opentelemetry-maven-extension is not working with maven 4.
Already having opentelemetry-maven-extension added to ./mvn/extensions.xml but not activating the extension by configuring an OTEL URL is breaking any build.
Steps to Reproduce
Add opentelemetry-maven-extension to ./mvn/extensions.xml (tested with latest 1.41.0-alpha)
run mvn clean or mvn verify
Expected Result
Successful build.
Actual Result
org.apache.maven.InternalErrorException: Internal error: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) [Guice/ErrorInjectingConstructor]: NoSuchMethodError: DefaultRuntimeInformation: method 'void <init>()' not found
...
Caused by: java.lang.NoSuchMethodError: org.apache.maven.rtinfo.internal.DefaultRuntimeInformation: method 'void <init>()' not found
at io.opentelemetry.maven.resources.MavenResourceProvider.createResource(MavenResourceProvider.java:22)
at io.opentelemetry.sdk.autoconfigure.ResourceConfiguration.configureResource(ResourceConfiguration.java:112)
...
Component version
1.41.0-alpha
Log output
[ERROR] Internal error: com.google.inject.ProvisionException: Unable to provision, see the following errors:
[ERROR]
[ERROR] 1) [Guice/ErrorInjectingConstructor]: NoSuchMethodError: DefaultRuntimeInformation: method 'void <init>()' not found
[ERROR] at OpenTelemetrySdkService.<init>(OpenTelemetrySdkService.java:45)
[ERROR] at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
[ERROR] \_ installed by: WireModule -> PlexusBindingModule
[ERROR] at OtelLifecycleParticipant.<init>(OtelLifecycleParticipant.java:32)
[ERROR] \_ for 1st parameter
[ERROR] at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
[ERROR] \_ installed by: WireModule -> PlexusBindingModule
[ERROR] while locating OtelLifecycleParticipant
[ERROR] while locating Object annotated with *
[ERROR]
[ERROR] Learn more:
[ERROR] https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
[ERROR]
[ERROR] 1 error
[ERROR]
[ERROR] ======================
[ERROR] Full classname legend:
[ERROR] ======================
[ERROR] DefaultRuntimeInformation: "org.apache.maven.rtinfo.internal.DefaultRuntimeInformation"
[ERROR] OpenTelemetrySdkService: "io.opentelemetry.maven.OpenTelemetrySdkService"
[ERROR] OtelLifecycleParticipant: "io.opentelemetry.maven.OtelLifecycleParticipant"
[ERROR] PlexusBindingModule: "org.eclipse.sisu.plexus.PlexusBindingModule"
[ERROR] WireModule: "org.eclipse.sisu.wire.WireModule"
[ERROR] ========================
[ERROR] End of classname legend:
[ERROR] ========================: org.apache.maven.rtinfo.internal.DefaultRuntimeInformation: method 'void <init>()' not found
[ERROR] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) [Guice/ErrorInjectingConstructor]: NoSuchMethodError: DefaultRuntimeInformation: method 'void <init>()' not found
at OpenTelemetrySdkService.<init>(OpenTelemetrySdkService.java:45)
at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
\_ installed by: WireModule -> PlexusBindingModule
at OtelLifecycleParticipant.<init>(OtelLifecycleParticipant.java:32)
\_ for 1st parameter
at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
\_ installed by: WireModule -> PlexusBindingModule
while locating OtelLifecycleParticipant
while locating Object annotated with *
Learn more:
https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
1 error
======================
Full classname legend:
======================
DefaultRuntimeInformation: "org.apache.maven.rtinfo.internal.DefaultRuntimeInformation"
OpenTelemetrySdkService: "io.opentelemetry.maven.OpenTelemetrySdkService"
OtelLifecycleParticipant: "io.opentelemetry.maven.OtelLifecycleParticipant"
PlexusBindingModule: "org.eclipse.sisu.plexus.PlexusBindingModule"
WireModule: "org.eclipse.sisu.wire.WireModule"
========================
End of classname legend:
========================
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:157)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.doExecute(MavenInvoker.java:497)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:99)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:89)
at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:141)
at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:113)
at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:64)
at org.apache.maven.cling.MavenCling.main(MavenCling.java:51)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:569)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) [Guice/ErrorInjectingConstructor]: NoSuchMethodError: DefaultRuntimeInformation: method 'void <init>()' not found
at OpenTelemetrySdkService.<init>(OpenTelemetrySdkService.java:45)
at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
\_ installed by: WireModule -> PlexusBindingModule
at OtelLifecycleParticipant.<init>(OtelLifecycleParticipant.java:32)
\_ for 1st parameter
at ClassRealm[coreExtension>io.opentelemetry.contrib:opentelemetry-maven-extension:1.41.0-alpha, parent: ClassRealm[plexus.core, parent: null]]
\_ installed by: WireModule -> PlexusBindingModule
while locating OtelLifecycleParticipant
while locating Object annotated with *
Learn more:
https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
1 error
======================
Full classname legend:
======================
DefaultRuntimeInformation: "org.apache.maven.rtinfo.internal.DefaultRuntimeInformation"
OpenTelemetrySdkService: "io.opentelemetry.maven.OpenTelemetrySdkService"
OtelLifecycleParticipant: "io.opentelemetry.maven.OtelLifecycleParticipant"
PlexusBindingModule: "org.eclipse.sisu.plexus.PlexusBindingModule"
WireModule: "org.eclipse.sisu.wire.WireModule"
========================
End of classname legend:
========================
at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:251)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1151)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:83)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:53)
at org.eclipse.sisu.wire.EntryListAdapter$ValueIterator.next(EntryListAdapter.java:113)
at java.util.AbstractCollection.addAll(AbstractCollection.java:335)
at org.apache.maven.DefaultMaven.getExtensionComponents(DefaultMaven.java:436)
at org.apache.maven.DefaultMaven.callListeners(DefaultMaven.java:375)
at org.apache.maven.DefaultMaven.afterSessionStart(DefaultMaven.java:355)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:237)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.doExecute(MavenInvoker.java:497)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:99)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:89)
at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:141)
at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:113)
at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:64)
at org.apache.maven.cling.MavenCling.main(MavenCling.java:51)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:569)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
Caused by: java.lang.NoSuchMethodError: org.apache.maven.rtinfo.internal.DefaultRuntimeInformation: method 'void <init>()' not found
at io.opentelemetry.maven.resources.MavenResourceProvider.createResource(MavenResourceProvider.java:22)
at io.opentelemetry.sdk.autoconfigure.ResourceConfiguration.configureResource(ResourceConfiguration.java:112)
at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.build(AutoConfiguredOpenTelemetrySdkBuilder.java:441)
at io.opentelemetry.maven.OpenTelemetrySdkService.<init>(OpenTelemetrySdkService.java:66)
at io.opentelemetry.maven.OpenTelemetrySdkService$$FastClassByGuice$$12a2e36d.GUICE$TRAMPOLINE(<generated>)
at io.opentelemetry.maven.OpenTelemetrySdkService$$FastClassByGuice$$12a2e36d.apply(<generated>)
at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
Additional context
IMHO extensions are not shaded in maven and do not have classworlds ClassLoader isolation.
So it looks like you are using an internal maven API that changed in an incompatible way in Maven4.
I am quite sure that there is a way to change the API call in a way that will work with maven 3.9 and maven 4 to make your extension work with both versions not breaking existing users on maven 3.9 when fixing this bug.
The text was updated successfully, but these errors were encountered:
Component(s)
maven-extension
What happened?
Description
It seems that opentelemetry-maven-extension is not working with maven 4.
Already having
opentelemetry-maven-extension
added to./mvn/extensions.xml
but not activating the extension by configuring an OTEL URL is breaking any build.Steps to Reproduce
opentelemetry-maven-extension
to./mvn/extensions.xml
(tested with latest 1.41.0-alpha)mvn clean
ormvn verify
Expected Result
Successful build.
Actual Result
Component version
1.41.0-alpha
Log output
Additional context
IMHO extensions are not shaded in maven and do not have classworlds ClassLoader isolation.
So it looks like you are using an internal maven API that changed in an incompatible way in Maven4.
I am quite sure that there is a way to change the API call in a way that will work with maven 3.9 and maven 4 to make your extension work with both versions not breaking existing users on maven 3.9 when fixing this bug.
The text was updated successfully, but these errors were encountered: