Community
Participate
Working Groups
Created attachment 285921 [details] Screenshot Hi, I receive an 'Unhandled event loop exception' exception (see attached) only when Eclipse runs JDK16. When I use JDK16 for my workspace it works. I use Eclipse 4.19 with JDK16 patches. Attached the screenshot showing the exception and a sample projecz. ava.lang.NullPointerException: Cannot invoke "org.eclipse.jface.viewers.ISelectionProvider.addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)" because "this.m_selectionProvider" is null at org.eclipse.wb.internal.core.editor.UndoManager.addSelectionListener(UndoManager.java:187) at org.eclipse.wb.internal.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:382) at org.eclipse.wb.internal.core.editor.UndoManager.activate(UndoManager.java:90) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState_True(DesignPage.java:263) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState(DesignPage.java:241) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:125) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:63) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1453) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1436) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1225) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3243) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1881) at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:330) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5092) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4570) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1461) at org.eclipse.equinox.launcher.Main.main(Main.java:1434) Eclipse Log: !ENTRY org.eclipse.ui 4 0 2021-03-23 09:09:44.715 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.ExceptionInInitializerError at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:166) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104) at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69) at org.eclipse.wb.core.model.broadcast.BroadcastSupport.getListener(BroadcastSupport.java:198) at org.eclipse.wb.internal.core.parser.JavaInfoParser.<init>(JavaInfoParser.java:216) at org.eclipse.wb.internal.core.parser.JavaInfoParser.<init>(JavaInfoParser.java:208) at org.eclipse.wb.internal.core.parser.JavaInfoParser.parse(JavaInfoParser.java:150) at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:534) at org.eclipse.wb.internal.core.editor.DesignPage.access$9(DesignPage.java:522) at org.eclipse.wb.internal.core.editor.DesignPage$8$1.run(DesignPage.java:449) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133) at org.eclipse.swt.widgets.Display.syncExec(Display.java:5941) at org.eclipse.wb.internal.core.editor.DesignPage$8.run(DesignPage.java:446) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:468) at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF_withProgress(DesignPage.java:465) at org.eclipse.wb.internal.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:415) at org.eclipse.wb.internal.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:381) at org.eclipse.wb.internal.core.editor.UndoManager.activate(UndoManager.java:90) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState_True(DesignPage.java:263) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState(DesignPage.java:241) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:125) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:63) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1453) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1436) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1225) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3243) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1881) at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:330) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5092) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4570) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1461) at org.eclipse.equinox.launcher.Main.main(Main.java:1434) Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @8f7544a at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199) at java.base/java.lang.reflect.Method.setAccessible(Method.java:193) at net.sf.cglib.core.ReflectUtils$2.run(ReflectUtils.java:56) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at net.sf.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:46) ... 67 more !ENTRY org.eclipse.ui 4 0 2021-03-23 09:09:44.722 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException: Cannot invoke "org.eclipse.jface.viewers.ISelectionProvider.addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)" because "this.m_selectionProvider" is null at org.eclipse.wb.internal.core.editor.UndoManager.addSelectionListener(UndoManager.java:187) at org.eclipse.wb.internal.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:382) at org.eclipse.wb.internal.core.editor.UndoManager.activate(UndoManager.java:90) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState_True(DesignPage.java:263) at org.eclipse.wb.internal.core.editor.DesignPage.handleActiveState(DesignPage.java:241) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:125) at org.eclipse.wb.internal.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:63) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1453) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1436) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1225) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3243) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1881) at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:330) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5831) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1427) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5092) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4570) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1461) at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
Hello Alexander, thanks for reporting. The reason is the usage of cglib. Before Java 16 we got this: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by ... WARNING: Please consider reporting this to the maintainers of ... WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Now with Java 16 it seems broken. https://www.eclipse.org/lists/platform-dev/msg02726.html http://jdk.java.net/16/release-notes section Proxy Classes Are Not Open for Reflective Access https://github.com/spring-projects/spring-framework/issues/20414
Thanks for your quick reply.
Hi, It works well when I use " --illegal-access=permit" (in eclipse.ini), proposed by Laurent. Regards Alex
Thank you for your feeback. We have a workaround before the definitive fix.
(In reply to Laurent CARON from comment #4) > Thank you for your feeback. We have a workaround before the definitive fix. Thanks, Laurent! Good call. I assumed it was all gone in Java16.
I have just registered to say thank you, I had the same problem and the " --illegal-access=permit" solution worked for me too.
(In reply to Carmen S. from comment #6) > I have just registered to say thank you, We appreciate that!
*** Bug 573529 has been marked as a duplicate of this bug. ***
*** Bug 573490 has been marked as a duplicate of this bug. ***
New Gerrit change created: https://git.eclipse.org/r/c/www.eclipse.org/windowbuilder/+/180631
Gerrit change https://git.eclipse.org/r/c/www.eclipse.org/windowbuilder/+/180631 was merged to [master]. Commit: http://git.eclipse.org/c/www.eclipse.org/windowbuilder.git/commit/?id=2e35653828da9f0f3cdfb73b3c7e0e666f9cfa50
New Gerrit change created: https://git.eclipse.org/r/c/www.eclipse.org/windowbuilder/+/180665
Gerrit change https://git.eclipse.org/r/c/www.eclipse.org/windowbuilder/+/180665 was merged to [master]. Commit: http://git.eclipse.org/c/www.eclipse.org/windowbuilder.git/commit/?id=8c1f6319839d0f7ed317635af19354019cb893ca
This issue was also reported on Stack Overflow (at least 4 times so far, of which 3 were closed as duplicate): https://stackoverflow.com/q/67394509/6505250
I have raised bug 573739 to JustJ, so that this problem does not occur for those using a JustJ Java 16 JRE when JustJ would add the --illegal-access=permit VM arg.
Thanks for taking care of those two things, Holger.
Pull request to add the VM argument "--illegal-access=permit" to "eclipse.ini" via a separate fragment and the p2 Eclipse touchpoint action "addJvmArg": https://github.com/eclipse/windowbuilder/pull/41 Adding "--illegal-access=permit" even when it is not needed does not seem to cause an issue, at least with a Java 11 HotSpot or OpenJ9 VM. So, adding "--illegal-access=permit" seems safe independent of which Java VM is used.
https://github.com/eclipse/windowbuilder/issues/45
*** Bug 573238 has been marked as a duplicate of this bug. ***
The argument --illegal-access=permit is no longer supported with Java 17.