Skip to content

java.lang.ClassCastException: class org.eclipse.swt.widgets.SwtComposite cannot be cast to class org.eclipse.swt.widgets.DartControl (org.eclipse.swt.widgets.SwtComposite and org.eclipse.swt.widgets.DartControl are in unnamed module #42

Description

@fipro78

I wanted to test Evolve with NatTable again, since you promoted that it works now.

I downloaded the current Evolve release 0.278 and placed it in the NatTable E4 examples application. Like described in the readme, I removed the win32 SWT fragment and renamed the Evolve JAR to match the filename.

This fails due to the following error:

java.lang.ClassCastException: class org.eclipse.swt.widgets.SwtComposite cannot be cast to class org.eclipse.swt.widgets.DartControl (org.eclipse.swt.widgets.SwtComposite and org.eclipse.swt.widgets.DartControl are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @139f7944)
        at org.eclipse.swt.widgets.DartControl.computeBoundsZoom(DartControl.java:4168)
        at org.eclipse.swt.widgets.DartControl.computeSize(DartControl.java:619)
        at org.eclipse.swt.widgets.Control.computeSize(Control.java:542)
        at org.eclipse.jface.dialogs.Dialog.setButtonLayoutData(Dialog.java:957)
        at org.eclipse.jface.dialogs.Dialog.createButton(Dialog.java:626)
        at org.eclipse.jface.dialogs.ErrorDialog.createButtonsForButtonBar(ErrorDialog.java:175)
        at org.eclipse.jface.dialogs.IconAndMessageDialog.createButtonBar(IconAndMessageDialog.java:176)
        at org.eclipse.jface.dialogs.IconAndMessageDialog.createDialogAndButtonArea(IconAndMessageDialog.java:226)
        at org.eclipse.jface.dialogs.ErrorDialog.createDialogAndButtonArea(ErrorDialog.java:262)
        at org.eclipse.jface.dialogs.IconAndMessageDialog.createContents(IconAndMessageDialog.java:204)
        at org.eclipse.jface.window.Window.create(Window.java:426)
        at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1090)
        at org.eclipse.jface.window.Window.open(Window.java:783)
        at org.eclipse.jface.dialogs.ErrorDialog.open(ErrorDialog.java:348)
        at org.eclipse.e4.ui.internal.workbench.swt.WorkbenchStatusReporter.openDialog(WorkbenchStatusReporter.java:125)
        at org.eclipse.e4.ui.internal.workbench.swt.WorkbenchStatusReporter.report(WorkbenchStatusReporter.java:62)
        at org.eclipse.e4.core.services.statusreporter.StatusReporter.show(StatusReporter.java:133)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5$1.eventLoopException(PartRenderingEngine.java:1137)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.handle(PartRenderingEngine.java:1178)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.lambda$1(PartRenderingEngine.java:1155)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:45)
        at org.eclipse.swt.widgets.SwtSynchronizer.runAsyncMessages(SwtSynchronizer.java:141)
        at org.eclipse.swt.widgets.SwtDisplay.runAsyncMessages(SwtDisplay.java:4388)
        at org.eclipse.swt.widgets.SwtDisplay.readAndDispatch(SwtDisplay.java:3995)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1456)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
        at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:166)
        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:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1415)

Then I tried the simpler way and created a SWT only runtime for the NatTable examples application. Only the NatTableExamples.jar, the SWT JAR (interfaces, not the OS dependent fragment) and the Evolve JAR. Then I tried to launch it via

java -cp * org.eclipse.nebula.widgets.nattable.examples.NatTableExamples

This fails due to the following error:

Exception in thread "main" java.lang.ClassCastException: class org.eclipse.swt.widgets.SwtShell cannot be cast to class org.eclipse.swt.widgets.DartControl (org.eclipse.swt.widgets.SwtShell and org.eclipse.swt.widgets.DartControl are in unnamed module of loader 'app')
        at org.eclipse.swt.widgets.DartControl.computeBoundsZoom(DartControl.java:4168)
        at org.eclipse.swt.widgets.DartControl.computeSize(DartControl.java:619)
        at org.eclipse.swt.widgets.Control.computeSize(Control.java:542)
        at org.eclipse.swt.layout.GridData.computeSize(GridData.java:527)
        at org.eclipse.swt.layout.SwtGridLayout.layout(SwtGridLayout.java:146)
        at org.eclipse.swt.layout.SwtGridLayout.layout(SwtGridLayout.java:120)
        at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:180)
        at org.eclipse.swt.widgets.SwtComposite.updateLayout(SwtComposite.java:1397)
        at org.eclipse.swt.widgets.SwtComposite.WM_SIZE(SwtComposite.java:1815)
        at org.eclipse.swt.widgets.SwtCanvas.WM_SIZE(SwtCanvas.java:463)
        at org.eclipse.swt.widgets.SwtDecorations.WM_SIZE(SwtDecorations.java:1774)
        at org.eclipse.swt.widgets.SwtControl.windowProc(SwtControl.java:5406)
        at org.eclipse.swt.widgets.SwtCanvas.windowProc(SwtCanvas.java:349)
        at org.eclipse.swt.widgets.SwtDecorations.windowProc(SwtDecorations.java:1593)
        at org.eclipse.swt.widgets.SwtShell.windowProc(SwtShell.java:2532)
        at org.eclipse.swt.widgets.SwtDisplay.windowProc(SwtDisplay.java:5403)
        at org.eclipse.swt.internal.win32.OS.ShowWindow(Native Method)
        at org.eclipse.swt.widgets.SwtDecorations.setVisible(SwtDecorations.java:1385)
        at org.eclipse.swt.widgets.SwtShell.setVisible(SwtShell.java:2264)
        at org.eclipse.swt.widgets.SwtShell.open(SwtShell.java:1367)
        at org.eclipse.swt.widgets.Shell.open(Shell.java:655)

I have the org.eclipse.swt_3.133.0.v20260225-1014.jar in my runtimes, start the applications using Java 21.

Any ideas what could be wrong? From the docs I would assume this should work. I really can't explain the classloading issues.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions