eclipse.platform icon indicating copy to clipboard operation
eclipse.platform copied to clipboard

Initialization themes for (e4) color/swt/css framwork fails (still)

Open minduch opened this issue 5 months ago • 0 comments

  • 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 <cI.ApplicationUI> [#3,main,6,main] Initial color theme due to , 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) *<-- 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 <cI.ApplicationUI> [#3,main,6,main] Initial color theme due to Eclipse E4 failure

      , 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)

minduch avatar Jul 17 '25 20:07 minduch