Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #20 - XMLParser should not require a bundle context but a Parser in the constructor #21

Merged
merged 1 commit into from
Mar 29, 2022

Conversation

laeubi
Copy link
Member

@laeubi laeubi commented Mar 29, 2022

No description provided.

@laeubi laeubi force-pushed the issue_20 branch 3 times, most recently from 15b9f6d to 01e2de3 Compare March 29, 2022 09:47
Copy link
Contributor

@mickaelistria mickaelistria left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please restore visibility of unrelated flags to not introduce unrelated extra risk as part of this commit.

@@ -192,31 +192,31 @@ private Location getLockLocation(URI repositoryLocation) throws IOException {
// Constants defining the structure of the XML for a SimpleArtifactRepository

// A format version number for simple artifact repository XML.
public static final Version COMPATIBLE_VERSION = Version.createOSGi(1, 0, 0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why changing that here? Is it required as part of the change?
I'd rather not change visibility here as it's very likely some other stuff (wrongly) depends on it; and it doesn't seem related to the desired improvement.
Also, static final should at least remain.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"public static final" is the default in interfaces and thus my eclipse-sdk removes unnecessary modifiers here. It seems I have to somewhat fore ommph not reformatting/cleanup code, but maybe we simply could keep it as it is equivalent?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My bad. Let's merge.

@mickaelistria mickaelistria merged commit 7b34c92 into eclipse-equinox:master Mar 29, 2022
@HannesWell
Copy link
Member

It looks like this change requires some adjustments in Tycho.
@laeubi can you please give me some hints what to do.
I'm currently trying to validate the change in #64 with a locally build version of p2 with that fix,
Just removing the BundleContext arguments fixed the compile-errors but if I try to run the Maven+Tycho build of equinox/framework using the locally build Tycho version (with the p2-patch) the initial resolution fails. I suspect that a parser-factory should be provided in some places?

@HannesWell
Copy link
Member

After I simply reverted this change locally P2 and subsequently Tycho build fine without further changes.

@laeubi
Copy link
Member Author

laeubi commented May 23, 2022

Can you share a Stack trace that shows where the problem occurs?

@HannesWell
Copy link
Member

Can you share a Stack trace that shows where the problem occurs?

Yes. After basically removing the BundleContext argument from the constructors of Parser35M7, MetadataIO.Parser and SimpleArtifactRepositoryIO.Parser and building Tycho locally, thats the console print-out for the equinox-framework build:

[INFO] Scanning for projects...
[WARNING] Could not start bundle org.eclipse.core.net
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.core.net [16]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.preferences; bundle-version="3.2.200"
    -> Bundle-SymbolicName: org.eclipse.equinox.preferences; bundle-version="3.10.0.v20220503-1634"; singleton:="true"
       org.eclipse.equinox.preferences [49]
         Unresolved requirement: Require-Bundle: org.osgi.service.prefs; bundle-version="[1.1.0,1.2.0)"; visibility:="reexport"
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.security; bundle-version="[1.0.0,2.0.0)"
    -> Bundle-SymbolicName: org.eclipse.equinox.security; bundle-version="1.3.900.v20220108-1321"; singleton:="true"
       org.eclipse.equinox.security [51]
         Unresolved requirement: Import-Package: org.osgi.service.prefs; version="[1.1.0,2.0.0)"
         Unresolved requirement: Import-Package: org.eclipse.core.runtime.preferences
           -> Export-Package: org.eclipse.core.runtime.preferences; bundle-symbolic-name="org.eclipse.equinox.preferences"; bundle-version="3.10.0.v20220503-1634"; version="3.5.0"

	at org.eclipse.osgi.container.Module.start(Module.java:463)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:445)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.tryActivateBundle(DefaultEquinoxEmbedder.java:208)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.activateBundlesInWorkingOrder(DefaultEquinoxEmbedder.java:201)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.doStart(DefaultEquinoxEmbedder.java:176)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.start(DefaultEquinoxEmbedder.java:70)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:297)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:273)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.p2.resolver.P2DependencyResolver.initialize(P2DependencyResolver.java:491)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.initialize(PlexusLifecycleManager.java:303)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:207)
	at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
	at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
	at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.eclipse.tycho.core.resolver.DefaultDependencyResolverFactory.lookupDependencyResolver(DefaultDependencyResolverFactory.java:60)
	at org.eclipse.tycho.core.resolver.DefaultTychoResolver.setupProject(DefaultTychoResolver.java:111)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:111)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:253)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
[WARNING] Error initializing: org.eclipse.tycho.p2.resolver.P2DependencyResolver@3a40bb52
java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:299)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:273)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.p2.resolver.P2DependencyResolver.initialize(P2DependencyResolver.java:491)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.initialize(PlexusLifecycleManager.java:303)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:207)
	at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
	at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
	at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.eclipse.tycho.core.resolver.DefaultDependencyResolverFactory.lookupDependencyResolver(DefaultDependencyResolverFactory.java:60)
	at org.eclipse.tycho.core.resolver.DefaultTychoResolver.setupProject(DefaultTychoResolver.java:111)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:111)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:253)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:289)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.osgi.configuration.OSGiProxyConfigurator.afterFrameworkStarted(OSGiProxyConfigurator.java:41)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.doStart(DefaultEquinoxEmbedder.java:179)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.start(DefaultEquinoxEmbedder.java:70)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:297)
	... 51 more
[WARNING] Error injecting: org.eclipse.tycho.p2.resolver.P2DependencyResolver
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error notifying InjectionListener org.eclipse.sisu.plexus.PlexusBeanBinder@284990de of org.eclipse.tycho.p2.resolver.P2DependencyResolver.
 Reason: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
  while locating org.eclipse.tycho.p2.resolver.P2DependencyResolver

1 error
	at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:226)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1053)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.eclipse.tycho.core.resolver.DefaultDependencyResolverFactory.lookupDependencyResolver(DefaultDependencyResolverFactory.java:60)
	at org.eclipse.tycho.core.resolver.DefaultTychoResolver.setupProject(DefaultTychoResolver.java:111)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:111)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:253)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:299)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:273)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.p2.resolver.P2DependencyResolver.initialize(P2DependencyResolver.java:491)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.initialize(PlexusLifecycleManager.java:303)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:207)
	at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
	at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
	at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	... 33 more
Caused by: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:289)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.osgi.configuration.OSGiProxyConfigurator.afterFrameworkStarted(OSGiProxyConfigurator.java:41)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.doStart(DefaultEquinoxEmbedder.java:179)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.start(DefaultEquinoxEmbedder.java:70)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:297)
	... 51 more
[ERROR] Internal error: java.lang.RuntimeException: Could not instantiate requested DependencyResolver component with role = p2: com.google.inject.ProvisionException: Unable to provision, see the following errors:
[ERROR] 
[ERROR] 1) Error notifying InjectionListener org.eclipse.sisu.plexus.PlexusBeanBinder@284990de of org.eclipse.tycho.p2.resolver.P2DependencyResolver.
[ERROR]  Reason: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
[ERROR]   while locating org.eclipse.tycho.p2.resolver.P2DependencyResolver
[ERROR]   at ClassRealm[extension>org.eclipse.tycho:tycho-maven-plugin:3.0.0-SNAPSHOT, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@3764951d] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
[ERROR]   while locating org.eclipse.tycho.core.DependencyResolver annotated with @com.google.inject.name.Named(value="p2")
[ERROR] 
[ERROR] 1 error
[ERROR]       role: org.eclipse.tycho.core.DependencyResolver
[ERROR]   roleHint: p2
[ERROR] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Could not instantiate requested DependencyResolver component with role = p2
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:120)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.RuntimeException: Could not instantiate requested DependencyResolver component with role = p2
	at org.eclipse.tycho.core.resolver.DefaultDependencyResolverFactory.lookupDependencyResolver(DefaultDependencyResolverFactory.java:62)
	at org.eclipse.tycho.core.resolver.DefaultTychoResolver.setupProject(DefaultTychoResolver.java:111)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:111)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:253)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	... 11 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error notifying InjectionListener org.eclipse.sisu.plexus.PlexusBeanBinder@284990de of org.eclipse.tycho.p2.resolver.P2DependencyResolver.
 Reason: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
  while locating org.eclipse.tycho.p2.resolver.P2DependencyResolver
  at ClassRealm[extension>org.eclipse.tycho:tycho-maven-plugin:3.0.0-SNAPSHOT, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@3764951d] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.core.DependencyResolver annotated with @com.google.inject.name.Named(value="p2")

1 error
      role: org.eclipse.tycho.core.DependencyResolver
  roleHint: p2
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:267)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.eclipse.tycho.core.resolver.DefaultDependencyResolverFactory.lookupDependencyResolver(DefaultDependencyResolverFactory.java:60)
	... 16 more
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error notifying InjectionListener org.eclipse.sisu.plexus.PlexusBeanBinder@284990de of org.eclipse.tycho.p2.resolver.P2DependencyResolver.
 Reason: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
  while locating org.eclipse.tycho.p2.resolver.P2DependencyResolver
  at ClassRealm[extension>org.eclipse.tycho:tycho-maven-plugin:3.0.0-SNAPSHOT, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@3764951d] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.core.DependencyResolver annotated with @com.google.inject.name.Named(value="p2")

1 error
	at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:226)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1053)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	... 18 more
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:299)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:273)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.p2.resolver.P2DependencyResolver.initialize(P2DependencyResolver.java:491)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.initialize(PlexusLifecycleManager.java:303)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:207)
	at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
	at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
	at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
	at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	... 22 more
Caused by: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:289)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:268)
	at org.eclipse.tycho.osgi.configuration.OSGiProxyConfigurator.afterFrameworkStarted(OSGiProxyConfigurator.java:41)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.doStart(DefaultEquinoxEmbedder.java:179)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.start(DefaultEquinoxEmbedder.java:70)
	at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:297)
	... 51 more
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorException

@laeubi
Copy link
Member Author

laeubi commented May 23, 2022

[WARNING] Could not start bundle org.eclipse.core.net
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.core.net [16]
Unresolved requirement: Require-Bundle: org.eclipse.equinox.preferences; bundle-version="3.2.200"
-> Bundle-SymbolicName: org.eclipse.equinox.preferences; bundle-version="3.10.0.v20220503-1634"; singleton:="true"
org.eclipse.equinox.preferences [49]
Unresolved requirement: Require-Bundle: org.osgi.service.prefs; bundle-version="[1.1.0,1.2.0)"; visibility:="reexport"
Unresolved requirement: Require-Bundle: org.eclipse.equinox.security; bundle-version="[1.0.0,2.0.0)"
-> Bundle-SymbolicName: org.eclipse.equinox.security; bundle-version="1.3.900.v20220108-1321"; singleton:="true"
org.eclipse.equinox.security [51]
Unresolved requirement: Import-Package: org.osgi.service.prefs; version="[1.1.0,2.0.0)"
Unresolved requirement: Import-Package: org.eclipse.core.runtime.preferences
-> Export-Package: org.eclipse.core.runtime.preferences; bundle-symbolic-name="org.eclipse.equinox.preferences"; bundle-version="3.10.0.v20220503-1634"; version="3.5.0"

Could it be due to the recent removed / changed providers of some packages? I have a while back already did as you said and removed the BC from constructor and it has worked, so I'm a bit surprised we are seeing issues here.

Are you sure that you have only P2 changed / consumed from your local repo? I generally use -Dtycho.localArtifacts=ignore because of such things, and if I need a local P2, build P2+Tycho from a fresh repo e.g. using -Dmaven.repo.local=/tmp/p2test

@HannesWell
Copy link
Member

Strange.

Are you sure that you have only P2 changed / consumed from your local repo? I generally use -Dtycho.localArtifacts=ignore because of such things, and if I need a local P2, build P2+Tycho from a fresh repo e.g. using -Dmaven.repo.local=/tmp/p2test

Relatively sure. I cannot remember having installed another Eclipse project into my local Maven-repo. And I deleted the org/eclipse/equinox respectively tycho folders in my local m2-repo before a p2+tycho installation round.

I can only say that reverting this change on top of my change in #64 and building/installation p2+tycho again fixed the issue for me locally. But you are right. The potential for interference is great here. I will try your suggestion later this evening and can report back.

@laeubi
Copy link
Member Author

laeubi commented May 23, 2022

At least the error does not indicate a problem in the code itself but some class-path issues, so there must have changed something else beside the usual removing of the BC that triggers this, one thing that might interfere here is that we use P2 in pom and in target (and thus maybe the pom.xml has to be adjusted as well), but I don't see yet why reverting this change should make a difference here... this reminds me of #23 and that we should get a faster feedback cycle from p2->tycho ...

@HannesWell
Copy link
Member

At least the error does not indicate a problem in the code itself but some class-path issues, so there must have changed something else beside the usual removing of the BC that triggers this, one thing that might interfere here is that we use P2 in pom and in target (and thus maybe the pom.xml has to be adjusted as well), but I don't see yet why reverting this change should make a difference here...

That sounds reasonable. I'll try that.

this reminds me of #23 and that we should get a faster feedback cycle from p2->tycho ...

Agree. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants