NoClassDefFoundError of OSGI class SynchronousBundleListener for Tyrus initialization

Robert von Burg <[email protected]> Tue, 10 Feb 2026 15:35:03 +0000
Newsgroups gmane.comp.jakarta.tomcat.user
Message-ID <ZRH2PFD526FE413CAE5C1530EEF97947FB4DF62A@ZRH2PFD526FE413.CHEP278.PROD.OUTLOOK.COM>
Dear mailing list

Since upgrading to Tomcat 10.1.50 and .52, our REST endpoints don't deploy anymore. We get the following exception:

10-Feb-2026 15:33:33.415 SEVERE [http-nio-80-exec-10] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
        java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.tyrus.core.ServiceFinder
                at org.glassfish.tyrus.core.ComponentProviderService.create(ComponentProviderService.java:60)
                at org.glassfish.tyrus.core.TyrusServerEndpointConfigurator.lambda$new$0(TyrusServerEndpointConfigurator.java:43)
                at org.glassfish.tyrus.core.collection.Values$LazyValueImpl.get(Values.java:190)
                at org.glassfish.tyrus.core.TyrusServerEndpointConfigurator.getEndpointInstance(TyrusServerEndpointConfigurator.java:161)
                at jakarta.websocket.server.ServerEndpointConfig$Configurator.getEndpointInstance(ServerEndpointConfig.java:230)
                at org.apache.tomcat.websocket.WsSession.<init>(WsSession.java:241)
                at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:124)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:945)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
                at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
                at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
                at java.base/java.lang.Thread.run(Thread.java:1474)
        Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: org/osgi/framework/SynchronousBundleListener [in thread "http-nio-80-exec-1"]
                at java.base/java.lang.ClassLoader.defineClass1(Native Method)
                at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
                at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
                at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2359)
                at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2224)
                at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1338)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1186)
                at org.glassfish.tyrus.core.ReflectionHelper.getOsgiRegistryInstance(ReflectionHelper.java:806)
                at org.glassfish.tyrus.core.ServiceFinder.<clinit>(ServiceFinder.java:139)
                ... 14 more

Our application uses Jersey 3.1.1. Up to Tomcat 10.1.49 all was good, but since upgrading we get the above mentioned exception when the endpoint is being deployed.

When I compare the Tomcat versions, I found that the newest versions include a lot of OSGI manifests.

Does anyone know how I can fix this issue, or is anyone aware of it? I can't really find anything of help in the change logs.

Kind regards
Robert
--
Robert von Burg <[email protected]>
dipl. Informatiker in Softwareentwicklung HF / pBac-Eng ODEC
software development
system & network administration

https://strolch.li