Eclipse无法创建FXML等JavaFX相关文件问题求助
Eclipse创建FXML/FXGraph文件失败,报错NoClassDefFoundError: org/eclipse/jface/databinding/swt/WidgetProperties
问题描述
- 操作路径:
File -> New -> Other -> JavaFX -> new FXML Document -> Next,点击Next后无响应,无法创建FXML文件 - 创建FXGraph或JavaFX HTML Template时出现同样问题,弹出如下错误堆栈:
eclipse.buildId=4.26.0.20221201-1200 java.version=17.0.5 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE 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 org.eclipse.ui Error Sun Dec 11 06:12:31 CET 2022 Unhandled event loop exception java.lang.NoClassDefFoundError: org/eclipse/jface/databinding/swt/WidgetProperties at org.eclipse.fx.ide.ui.wizards.AbstractJDTElementPage.createControl(AbstractJDTElementPage.java:109) at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:178) at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:744) at org.eclipse.jface.wizard.WizardDialog.setWizard(WizardDialog.java:1182) at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1235) at org.eclipse.jface.wizard.WizardDialog.lambda$3(WizardDialog.java:1223) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74) at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1223) at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:918) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:469) at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:619) at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84) 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:4256) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4054) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3642) at org.eclipse.jface.window.Window.runEventLoop(Window.java:823) at org.eclipse.jface.window.Window.open(Window.java:799) at org.eclipse.ui.internal.handlers.WizardHandler$New.executeHandler(WizardHandler.java:263) at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:283) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283) at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:317) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:251) at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173) at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485) at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213) at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:389) at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:142) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4054) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3642) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) 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:643) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171) 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:136) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) 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:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596) at org.eclipse.equinox.launcher.Main.run(Main.java:1467) at org.eclipse.equinox.launcher.Main.main(Main.java:1440) Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.databinding.swt.WidgetProperties cannot be found by org.eclipse.fx.ide.ui_3.8.0.202204150904 ... 67 more
已尝试的操作
重装JavaFX、SceneBuilder以及Eclipse,问题未解决。
解决方案
方案1:安装缺失的JFace Databinding插件
- 打开Eclipse,进入
Help -> Install New Software - 在Work with下拉框中选择当前Eclipse版本对应的官方更新站点(例如2022-12版本对应
https://download.eclipse.org/releases/2022-12) - 在搜索框输入
JFace Databinding,找到Eclipse Databinding JFace插件,勾选后完成安装 - 重启Eclipse,重试创建FXML文件操作
方案2:修复JavaFX IDE插件版本不兼容问题
- 打开
Help -> About Eclipse IDE -> Installation Details,找到所有以org.eclipse.fx开头的插件,选中后点击Uninstall完成卸载 - 重启Eclipse,进入
Help -> Eclipse Marketplace,搜索e(fx)clipse,安装适配当前Eclipse版本的最新版插件 - 再次重启Eclipse后尝试创建操作
内容的提问来源于stack exchange,提问作者flexmaster
相关产品推荐
相关产品推荐

