无法在 Eclipse 中创建新的 FXML 文件

问题描述 投票:0回答:8

当我尝试在 Eclipse 中创建一个新的 FXML 文件(文件 -> 新建 -> 其他 -> JavaFX - 新的 FXML 文档 -> 下一步)时,什么也没有发生。它不创建文件。当我尝试创建 FXGraph 或 JavaFX HTML 模板(无论它们是什么)时,出现同样的问题。在我尝试创建后,我收到此错误消息:


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 软件也没有帮助。

eclipse javafx fxml
8个回答
5
投票

看起来 e(fx)clipse 2022-12 尚未更新,删除了一些数据绑定 API。

您可以在 https://github.com/eclipse-efx/efxclipse-eclipse/issues 提出问题,但如果您可以提出拉取请求来修复它,那么事情可能会进展得更快.


3
投票

我找到了解决此问题的方法。

  1. 创建一个新的 JavaFX 项目 Eclipse Project Creation Wizard Selection Screen
  2. 将 FXMLDocument 重命名为唯一的名称 JavaFX Project Navigator Display
  3. 右键单击并从刚刚创建的虚假项目中复制 .FXML 文件
  4. 右键单击您的实际项目并将.FXML 文件粘贴到实际项目中 New .FXML file is in the original JavaFX Project
  5. 删除伪造的 JavaFX 项目进行清理
  6. 明智地点头并拍拍自己的背

2
投票

我遇到了同样的问题,那是因为我使用的是 eclipse 12-2022。只需将其降级为 eclispe 09-2022 即可。


2
投票

我发现让 SceneBuilder 工作的解决方案是:

  • 创建一个通用文件,但将其命名为 .fxml
  • 转到 Window->Preferences->JavaFX 并在 SceneBuilder 可执行文件框中粘贴计算机上 scenebuilder 可执行文件的路径
  • 右键单击新创建的.fxml文件->使用scenebuilder打开

这是版本 2022-12


1
投票

此问题已在 e(fx)clipse 3.10.0 中得到修复(请参阅 commit 9a01848)。由于某种原因,截至撰写本文时,Eclipse Marketplace 上的可用版本至少已经过时了两个版本。我也不想仅仅为了完成这项工作而降级我当前的 Eclipse 版本。

您可以使用夜间软件网站获取最新版本:

  • 转至帮助 > 安装新软件
  • 单击管理...旁边的添加...按钮。
  • 将出现一个标题为“添加存储库”的对话框,询问名称和位置。 对于名称字段,您可以插入类似
      e(fx)clipse nightly
    • 的内容。
      对于位置字段,插入 
    • https://download.eclipse.org/efxclipse/updates-nightly/site/
    • 单击
    • 添加
    完成后,应出现以下列表:
  • 检查所有项目并单击
  • 下一步
  • 下一个窗口将显示要安装的项目列表,只需单击
  • 完成
  • 并等待它完成安装即可。

0
投票

所以我建议您下载 2021-09.(4.21) 版本,您可以在这里找到

https://www.eclipse.org/downloads/packages/

下载此版本的 Eclipse,这就是您能够创建 FXML 文件的全部内容。享受吧!


0
投票
新建 > 文件

输入带有扩展名 .fxml 的文件名手动创建 FXML 文件 之后通过

Window > Preferences > JavaFX 设置场景构建器路径

浏览并选择 SceneBuilder.exe 到 Scenebuilder 可执行文件应用并关闭 最后右键单击我们手动创建的 .fxml 文件,然后单击

使用 SceneBuilder 打开


0
投票
https://www.youtube.com/watch?v=WPIC-hK4_cg

© www.soinside.com 2019 - 2024. All rights reserved.