Initialization themes for (e4) color/swt/css framwork fails (still)
- Eclipse version 2025-09-M1 (and earlier too)
- Eclipse UI / Eclipse e4 (CSS) engine, during initialization
- Windows 11 ([Version 10.0.27898.1000])
- macOS 15.5 (Darwin mincy.mindus.mc 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:25 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6020 arm64)...
The "still" (in the titlebar) means that this is a known problem (for over 2 years) that we have faced for a LONG time, and Mr. Vogella kindly suggested we do otherwise. The explanations to do so are not very clear and we think that there it a matter of OSGi module loading not ready when the the API is fired by our code, e.g. to figure out what theme is being used (like dark or light/classic).
The text below in the output "***** THEME = DARK *****" is what we have added, it doesn't come from Eclipse.
So in Eclipse 2025-09-M1 we get this failure (printed thought our framework):
Eclipse E4 failure on macOS 15.5:
[WARNING] 17 Jul 2025 22:04:06.726
: [java.lang.NullPointerException: Cannot invoke "org.eclipse.e4.core.contexts.IEclipseContext.get(java.lang.Class)" because "this.e4Context" is null
at org.eclipse.ui.internal.WorkbenchPlugin.getThemeRegistry(WorkbenchPlugin.java:596)
at org.eclipse.ui.internal.themes.Theme.<init>(Theme.java:63)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getTheme(WorkbenchThemeManager.java:298)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getTheme(WorkbenchThemeManager.java:308)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.doSetCurrentTheme(WorkbenchThemeManager.java:233)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.setCurrentTheme(WorkbenchThemeManager.java:337)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getCurrentTheme(WorkbenchThemeManager.java:263)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.init(WorkbenchThemeManager.java:172)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getCurrentTheme(WorkbenchThemeManager.java:256)
at com.iizigo.ApplicationUI._calcTheme(ApplicationUI.java:223) *<-- Same here (null theme or not yet set)*
at com.iizigo.ApplicationUI.getInstance(ApplicationUI.java:401)
at com.iizigo.ApplicationUI.initialize(ApplicationUI.java:186)
at com.iizigo.Activator.start(Activator.java:1097)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:826)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:251)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:818)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:768)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1066)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394)
at org.eclipse.osgi.container.Module.doStart(Module.java:643)
at org.eclipse.osgi.container.Module.start(Module.java:500)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:622)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:525)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:438)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:652)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:226)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:1034)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:286)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:65)
at org.eclipse.ui.internal.WorkbenchPlugin.lambda$0(WorkbenchPlugin.java:285)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:283)
at org.eclipse.ui.internal.splash.SplashHandlerFactory$1.run(SplashHandlerFactory.java:122)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.create(SplashHandlerFactory.java:118)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.processElement(SplashHandlerFactory.java:103)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.findSplashHandlerFor(SplashHandlerFactory.java:61)
at org.eclipse.ui.internal.Workbench.getSplash(Workbench.java:944)
at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:821)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.Workbench.createSplashWrapper(Workbench.java:875)
at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:643)
at org.eclipse.swt.internal.DPIUtil.runWithAutoScaleValue(DPIUtil.java:666)
at org.eclipse.ui.internal.Workbench$AutoscaleAdaptation.runWithInitialAutoScaleValue(Workbench.java:3674)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:666)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:627)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1431)
at org.eclipse.equinox.launcher.Main.main(Main.java:1403)
Windows 11
WARNING] 17 Jul 2025 22:20:59.348
, API call = 'getThemeManager()getCurrentTheme()'***** THEME = DARK *****
: [java.lang.NullPointerException: Cannot invoke "org.eclipse.e4.core.contexts.IEclipseContext.get(java.lang.Class)" because "this.e4Context" is null
at org.eclipse.ui.internal.WorkbenchPlugin.getThemeRegistry(WorkbenchPlugin.java:596)
at org.eclipse.ui.internal.themes.Theme.<init>(Theme.java:63)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getTheme(WorkbenchThemeManager.java:298)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getTheme(WorkbenchThemeManager.java:308)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.doSetCurrentTheme(WorkbenchThemeManager.java:233)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.setCurrentTheme(WorkbenchThemeManager.java:337)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getCurrentTheme(WorkbenchThemeManager.java:263)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.init(WorkbenchThemeManager.java:172)
at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getCurrentTheme(WorkbenchThemeManager.java:256)
at com.iizigo.ApplicationUI._calcTheme(ApplicationUI.java:223) *--> here we obviously are working with and unset or a "null" theme*
at com.iizigo.ApplicationUI.getInstance(ApplicationUI.java:401)
at com.iizigo.ApplicationUI.initialize(ApplicationUI.java:186)
at com.iizigo.Activator.start(Activator.java:1097)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:826)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:251)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:818)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:768)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1066)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394)
at org.eclipse.osgi.container.Module.doStart(Module.java:643)
at org.eclipse.osgi.container.Module.start(Module.java:500)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:622)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:525)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:438)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:652)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:226)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:1034)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:286)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:65)
at org.eclipse.ui.internal.WorkbenchPlugin.lambda$0(WorkbenchPlugin.java:285)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:283)
at org.eclipse.ui.internal.splash.SplashHandlerFactory$1.run(SplashHandlerFactory.java:122)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.create(SplashHandlerFactory.java:118)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.processElement(SplashHandlerFactory.java:103)
at org.eclipse.ui.internal.splash.SplashHandlerFactory.findSplashHandlerFor(SplashHandlerFactory.java:61)
at org.eclipse.ui.internal.Workbench.getSplash(Workbench.java:944)
at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:821)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.Workbench.createSplashWrapper(Workbench.java:875)
at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:643)
at org.eclipse.swt.internal.DPIUtil.runWithAutoScaleValue(DPIUtil.java:666)
at org.eclipse.ui.internal.Workbench$AutoscaleAdaptation.runWithInitialAutoScaleValue(Workbench.java:3674)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:666)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:185)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:627)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1431)
at org.eclipse.equinox.launcher.Main.main(Main.java:1403)