Skip to content

org.simantics.debug.browser has broken dependencies with 2022-03 RCP

After #877 (closed) changes, Eclipse 2022-03 includes Jetty 10.6 as the base platform Jetty that for example org.simantics.debug.browser should be using.

However org.simantics.debug.browser still depends on a Jetty 9.4 and javax.servlet-api 3.1. This causes Equinox OSGi bundle resolution to look furiously until it hits a timeout during configuration area first time initialization.

Another problem is that org.simantics.debug.browser.ui depends on [0.0.1,1) org.simantics.debug.browserbutorg.simantics.debug.browseris versioned1.0.0`, which is just ridiculous :).

Eventually it spews out this:

!SESSION 2023-03-10 09:56:52.757 -----------------------------------------------
eclipse.buildId=unknown
java.version=11.0.14
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product fi.semantum.solvo.ui.desktopProduct -fixerrors -cssTheme org.eclipse.e4.ui.css.theme.e4_classic
Command-line arguments:  -product fi.semantum.solvo.ui.desktopProduct -data C:\w\ws dir\apros\trunk-2022-03/../runtime-Solvo.product -dev file:C:/w/ws dir/apros/trunk-2022-03/.metadata/.plugins/org.eclipse.pde.core/Solvo.product/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog -fixerrors -data @noDefault -cssTheme org.eclipse.e4.ui.css.theme.e4_classic

!ENTRY org.simantics.debug.browser 4 0 2023-03-10 09:59:01.182
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.simantics.debug.browser [348]
  Bundle was not resolved because of a uses constraint violation.
  org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"] because it is exposed to package 'javax.servlet' from resources javax.servlet-api [osgi.identity; osgi.identity="javax.servlet-api"; type="osgi.bundle"; version:Version="3.1.0"] and jakarta.servlet-api [osgi.identity; osgi.identity="jakarta.servlet-api"; type="osgi.bundle"; version:Version="4.0.0"] via two dependency chains.

Chain 1:
  org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"]
    require: (&(osgi.wiring.bundle=javax.servlet-api)(bundle-version>=3.1.0))
     |
    provide: osgi.wiring.bundle: javax.servlet-api
  javax.servlet-api [osgi.identity; osgi.identity="javax.servlet-api"; type="osgi.bundle"; version:Version="3.1.0"]

Chain 2:
  org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"]
    require: (&(osgi.wiring.bundle=org.eclipse.jetty.server)(bundle-version>=10.0.6))
     |
    provide: osgi.wiring.bundle; bundle-version:Version="10.0.6"; osgi.wiring.bundle="org.eclipse.jetty.server"
  org.eclipse.jetty.server [osgi.identity; osgi.identity="org.eclipse.jetty.server"; type="osgi.bundle"; version:Version="10.0.6"]
    import: (&(osgi.wiring.package=javax.servlet)(&(version>=4.0.0)(!(version>=5.0.0))))
     |
    export: osgi.wiring.package: javax.servlet
  jakarta.servlet-api [osgi.identity; osgi.identity="jakarta.servlet-api"; type="osgi.bundle"; version:Version="4.0.0"]
	at org.eclipse.osgi.container.Module.start(Module.java:463)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1781)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)

!ENTRY org.simantics.debug.browser.ui 4 0 2023-03-10 09:59:01.188
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.simantics.debug.browser.ui [349]
  Unresolved requirement: Require-Bundle: org.simantics.debug.browser; bundle-version="0.0.1"
    -> Bundle-SymbolicName: org.simantics.debug.browser; bundle-version="1.0.0.qualifier"
       org.simantics.debug.browser [348]
         No resolution report for the bundle.  Bundle was not resolved because of a uses constraint violation.
  org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"] because it is exposed to package 'javax.servlet' from resources javax.servlet-api [osgi.identity; osgi.identity="javax.servlet-api"; type="osgi.bundle"; version:Version="3.1.0"] and jakarta.servlet-api [osgi.identity; osgi.identity="jakarta.servlet-api"; type="osgi.bundle"; version:Version="4.0.0"] via two dependency chains.

Chain 1:
  org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"]
    require: (&(osgi.wiring.bundle=javax.servlet-api)(bundle-version>=3.1.0))
     |
    provide: osgi.wiring.bundle: javax.servlet-api
  javax.servlet-api [osgi.identity; osgi.identity="javax.servlet-api"; type="osgi.bundle"; version:Version="3.1.0"]

Chain 2:
  org.simantics.debug.browser [osgi.identity; osgi.identity="org.simantics.debug.browser"; type="osgi.bundle"; version:Version="1.0.0.qualifier"]
    require: (&(osgi.wiring.bundle=org.eclipse.jetty.server)(bundle-version>=10.0.6))
     |
    provide: osgi.wiring.bundle; bundle-version:Version="10.0.6"; osgi.wiring.bundle="org.eclipse.jetty.server"
  org.eclipse.jetty.server [osgi.identity; osgi.identity="org.eclipse.jetty.server"; type="osgi.bundle"; version:Version="10.0.6"]
    import: (&(osgi.wiring.package=javax.servlet)(&(version>=4.0.0)(!(version>=5.0.0))))
     |
    export: osgi.wiring.package: javax.servlet
  jakarta.servlet-api [osgi.identity; osgi.identity="jakarta.servlet-api"; type="osgi.bundle"; version:Version="4.0.0"]
	at org.eclipse.osgi.container.Module.start(Module.java:463)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1781)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)