eclipse.platform.swt
eclipse.platform.swt copied to clipboard
[windows] WebView2 runtime not found
Describe the bug When launching Eclipse IDE for Java Developers 2025-03 for the first time an error
WebView2 runtime not found
happens.
!SESSION 2025-04-06 15:49:12.638 -----------------------------------------------
eclipse.buildId=4.35.0.20250306-0811
java.version=21.0.6
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product -data C:\Users\Test\eclipse-workspace2
!ENTRY ch.qos.logback.classic 1 0 2025-04-06 15:49:15.775
!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized.
!ENTRY ch.qos.logback.classic 1 0 2025-04-06 15:49:17.449
!MESSAGE Logback config file: C:\Users\Test\eclipse-workspace2\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.7.0.20241001-1350.xml
!ENTRY org.eclipse.egit.ui 2 0 2025-04-06 15:49:24.622
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\Test'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
!ENTRY org.eclipse.e4.ui.workbench 4 0 2025-04-06 15:49:33.973
!MESSAGE Not implemented [WebView2 runtime not found]
!STACK 0
org.eclipse.swt.SWTError: Not implemented [WebView2 runtime not found]
at org.eclipse.swt.SWT.error(SWT.java:4957)
at org.eclipse.swt.browser.Edge.createEnvironment(Edge.java:591)
at org.eclipse.swt.browser.Edge.createInstance(Edge.java:634)
at org.eclipse.swt.browser.Edge.create(Edge.java:630)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:99)
at org.eclipse.oomph.setup.presentation.NotificationViewPart.createPartControl(NotificationViewPart.java:131)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:158)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:365)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:977)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:939)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:312)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:203)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:90)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:59)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
at org.eclipse.ui.internal.WorkbenchContributionFactory.create(WorkbenchContributionFactory.java:46)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:134)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:991)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:543)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:527)
at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:73)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:991)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:762)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:727)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:711)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.createElement(PartServiceImpl.java:1314)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1275)
at org.eclipse.ui.internal.WorkbenchPage.showPart(WorkbenchPage.java:1264)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1233)
at org.eclipse.ui.internal.WorkbenchPage.lambda$13(WorkbenchPage.java:4243)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4241)
at org.eclipse.oomph.setup.presentation.handlers.NotificationsHandler.execute(NotificationsHandler.java:47)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:299)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:233)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.oomph.setup.ui.SetupUIPlugin.lambda$1(SetupUIPlugin.java:549)
at org.eclipse.oomph.ui.UIUtil$5.run(UIUtil.java:604)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4094)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3710)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:668)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:576)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:178)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
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:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:607)
at org.eclipse.equinox.launcher.Main.run(Main.java:1492)
at org.eclipse.equinox.launcher.Main.main(Main.java:1465)
!ENTRY org.eclipse.oomph.setup.editor 2 0 2025-04-06 15:51:07.642
!MESSAGE class org.eclipse.ui.internal.ErrorViewPart cannot be cast to class org.eclipse.oomph.setup.presentation.NotificationViewPart (org.eclipse.ui.internal.ErrorViewPart is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @43c53924; org.eclipse.oomph.setup.presentation.NotificationViewPart is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @bbd10fa)
!STACK 0
java.lang.ClassCastException: class org.eclipse.ui.internal.ErrorViewPart cannot be cast to class org.eclipse.oomph.setup.presentation.NotificationViewPart (org.eclipse.ui.internal.ErrorViewPart is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @43c53924; org.eclipse.oomph.setup.presentation.NotificationViewPart is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @bbd10fa)
at org.eclipse.oomph.setup.presentation.handlers.NotificationsHandler.execute(NotificationsHandler.java:47)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:299)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:233)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.oomph.setup.ui.SetupUIPlugin.lambda$1(SetupUIPlugin.java:549)
at org.eclipse.oomph.ui.UIUtil$5.run(UIUtil.java:604)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4094)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3710)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:668)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:576)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:178)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
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:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:607)
at org.eclipse.equinox.launcher.Main.run(Main.java:1492)
at org.eclipse.equinox.launcher.Main.main(Main.java:1465)
To Reproduce Start Eclipse for Java Developer 2025-03 on a fresh workspace. Wait for background procedures to complete.
Expected behavior No errors.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment:
- Select the platform(s) on which the behavior is seen:
-
- [ ] All OS
-
- [x] Windows
-
- [ ] Linux
-
- [ ] macOS
-
Additional OS info (e.g. OS version, Linux Desktop, etc) Windows Server 2019 Datacenter Version 10.0.17763 Build 17763
-
JRE/JDK version java.vendor=Eclipse Adoptium java.vendor.url=https://adoptium.net/ java.vendor.url.bug=https://github.com/adoptium/adoptium-support/issues java.vendor.version=Temurin-21.0.6+7 java.version=21.0.6
Version since org.eclipse.e4.ui.css.swt (0.15.500.v20241219-0802) "Eclipse CSS SWT Support" [Active] org.eclipse.e4.ui.css.swt.theme (0.14.500.v20250213-1508) "Eclipse CSS SWT Theme Support" [Active] org.eclipse.e4.ui.swt.win32 (1.2.300.v20240416-0658) "Eclipse UI WIN32 Enhancements" [Resolved] org.eclipse.e4.ui.workbench.addons.swt (1.5.600.v20241107-2150) "Eclipse e4 Workbench Add-ons" [Active] org.eclipse.e4.ui.workbench.renderers.swt (0.16.700.v20250212-1224) "Eclipse e4 Workbench SWT Renderer" [Active] org.eclipse.e4.ui.workbench.swt (0.17.700.v20250123-0706) "Eclipse e4 Workbench SWT" [Active] org.eclipse.jface.databinding (1.15.300.v20240424-0444) "JFace Data Binding for SWT and JFace" [Resolved] org.eclipse.swt (3.129.0.v20250221-1734) "Standard Widget Toolkit" [Resolved] org.eclipse.swt.win32.win32.x86_64 (3.129.0.v20250221-1734) "Standard Widget Toolkit for Windows on x86_64" [Resolved]
Workaround (or) Additional context None
You manually have to install it on some versions of Windows 10. I had to do this on W10 but not W11.
See https://developer.microsoft.com/en-gb/microsoft-edge/webview2?form=MA13LH#download
TODO: add download link to error message
would be terrific to have a kind of fallback to java internal HTML renderer(used in JEditorPane) or so.
even if it is outdated and sometimes weird, it lets avoid near-crash errors asking user to terminate the IDE immediately when discovered
btw, surpisingly, a near-spamming tab was causing this near-crash failure:
it's extremely bad idea to terminate IDE when near-spamming attempt failed. there definitely must be an option to ENABLE such spontaneous(during 'Deferred early start') browsing attempts from IDE when user wants to, and the behavior must be PROHIBITED by default.
and the whole concept: most likely there is a favorite browser user prefers on client machine, so user simply navigates hyperlinks with it never expecting any overclevered software even attempts to duplicate it's functionality(instead of re-using). for many-many reasons there could be no browsers zoo and no Microsoft Edges at all and user may be totally happy - since Eclipse wasn't fail to show lightweight HTML like Javadoc within it's tooltips and opening page of started server(e.g. Tomcat) in default system browser is not a problem for it. but now i've installed WebView2 to the OS, and instead of inline Javadoc tooltips Eclipse shows blank tooltip in Java editor and immediately attempts to open something in Firefox - but something goes wrong and a blank tab appears in browser.
so, a simple text message, offering user to navigate some internet link WITH FAVORITE BROWSER is not such troublesome and error-prone and definitely is totally enough - of course, when user WANTS to deal with it at all.
@GooogLeMorons From your post, we have no idea what exactly failed for you. Eclipse relies on browser integration at many places, like Java element information popups, Javadoc, help, welcome page etc.. It's not only about opening a browser to show some web page, for which it might be okay to open some external application.
Since you find the overall concept so bad (which is btw the same it has been for years), please propose a better concept, in the best case with a PR demonstrating it. Eclipse has always integrated native browsers. On Linux and MacOS you have WebKit integration. Before using Edge/WebView2, the Internet Explorer engine of Windows was used (and actually you may still use it to get rid of your problems at least as long as it's still available on Windows: https://eclipse.dev/eclipse/news/news.html?file=4.35/platform.html#edgeBrowserDefault). But be aware that Internet Explorer will still be installed in your system and Eclipse will still not use your favorite browser for showing the above mentioned elements (like it did for all the time you are using it), as it does not use the OS default browser. Or did you really have no native engine like WebView2 or Internet Explorer installed so that some elements (like Java element information) use a fallback mechanism to show simple test rendering of HTML? I am only aware of that for specific elements but not for the browser widget in general, but I don't think that there are people who really want to use Eclipse in that way anyway.
well, they say at https://eclipse.dev/eclipse/news/news.html?file=4.35/platform.html#edgeBrowserDefault that Welcome page is using Edge WebView2 now. such a great example the "the same concept it has been for years" works really good, being designed and implemented in good faith! now(v. 4.35.0) for me Welcome page is blank(maybe related). when i enforce it with main menu Help/Welcome or blank workspace, there are no error popups, no crashes and no recommendations to shut down IDE immediately - just blank tab.
This is the key concept i expect - failure-proof.
moreover, some years ago - when it was functional - i've disabled Welcome screen somehow(probably, with an option on it), don't see it any more and don't suffer.
This is an optional, but very appreciated concept i expect - capability to isolate or disable a (non-functional) feature.
in addition, if i could uninstall Welcome screen, i probably would do it, forget it and focus on the task Eclipse itself is great at: developing code.
This is the ideal concept i would love - modularity.
so, applying this to "Eclipse IDE for Enterprise Java and Web Developers 2025-06 M1" tab:
-
failure-proof: it has to show blank (or better log message about missing WebView2 and never appear) instead of... probably, leaving exception to be handled in default for unhandled exceptions way: with all it's annoying popups and asking for shutdown.
-
capability to isolate/disable: there must be an option e.g. in Preferences, disabling(better 'enabling' for such features) all the "Eclipse IDE for Enterprise Java and Web Developers 2025-06 M1" tabs forever, so user never being bothered if never asked for it and never suffer of it's bugs and crashes.
-
modularity: if it is possible to quickly find out which plig-in the tab is and remove it somehow(and never install next time) - this would be great
as a user, i really hate when a software pretends to know better, what to show me and what to do: open "What's new" in browser, go to some internet location and display stuff appeared there, downloading something and self-updating, etc. when being never asked for it. i believe it must fulfill direct user requests, without any amateur activities: when such activities fail and crash, it looks really unprofessional, really ugly.
there can be different points of view: which activities are acceptable, which are appropriate and which are not. but user-friendly capability to turn them on or off is a must.
@GooogLeMorons: Does your Windows username by any chance contain space or special characters? The behavior that things suddenly open in an external browser instead of internally is a known/fixed issue: #1912 #1920 Please try with the latest I-build version from https://download.eclipse.org/eclipse/downloads/
Let's keep discussions on this issue focused on error handling in case that WebView2 is not installed.
Does your Windows username by any chance contain space or special characters?
no, but path is not default: 'd:\IoT.Users\Meow'
Please try with the latest I-build version from https://download.eclipse.org/eclipse/downloads/
tried and got blank tab in default browser again. not sure i did everything properly:
... -> Install version 'Stagging(2025-06)' ->
... Cancel -> Check for updates -> Update -> Restart IDE ->
not sure i'm on build I20250423-0800 after update. is it OK or i did something wrong?
Try this
https://download.eclipse.org/eclipse/downloads/drops4/I20250423-0800/download.php?dropFile=eclipse-SDK-I20250423-0800-win32-x86_64.zip
https://download.eclipse.org/eclipse/downloads/drops4/I20250423-0800/download.php?dropFile=eclipse-SDK-I20250423-0800-win32-x86_64.zip
thanks
blank tab in default browser again. where to look, where to dig? maybe, enforce Edge WebView2 to install as system-wide component instead of occupying user home somehow...?