You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse表单设计器报错:FormToolKit已释放及JFace修复求助

Eclipse中EntireJ表单设计器报错的快速修复方案

我在Eclipse中维护一个Java项目分支,项目包含多个需更新的表单。点击.form文件打开表单设计器时,会弹出“Form Setup”窗口,提示“在以下区域定义表单的设计/设置”,窗口内有选项列表:

  • 点击与表单同名的“OptionsDialog”选项,报错:发生错误,详见错误日志。无法调用"org.entirej.framework.plugin.framework.properties.EJPluginEntireJProperties.getFormRendererContainer()",因为"entireJProperties"为null
  • 点击列表中其他选项(如“Blocks”),报错:发生错误,详见错误日志。FormToolKit has been disposed

寻求耗时10分钟以内的快速方案:要么修复JFace(不在Eclipse Marketplace且无下载源),要么安装可直接适配现有.form文件(20%把握基于Swing)的新表单设计器插件。


错误日志(用户名和项目名已匿名)

错误1:核心配置文件缺失

eclipse.buildId=4.34.0.20241128-0756
java.version=23.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_GB
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 
file:/C:/Users/(username)/eclipse-workspace/

org.eclipse.core.resources
Error
Sat Feb 01 12:54:18 GMT 2025
Resource '/(ProjectName)/src/application.ejprop' does not exist.

java.lang.Exception: Resource 
'/(ProjectName)/src/application.ejprop' does not exist.
at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42)
at org.eclipse.core.internal.resources.ResourceException.<init>(ResourceException.java:38)
at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:364)
at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:238)
at org.eclipse.core.internal.resources.File.getContents(File.java:350)
at org.eclipse.core.internal.resources.File.getContents(File.java:342)
at org.entirej.framework.plugin.framework.properties.EntirejPropertiesUtils.retrieveEntirejProperties(EntirejPropertiesUtils.java:63)
at org.entirej.framework.plugin.framework.properties.EJPluginEntireJPropertiesLoader.getEntireJProperties(EJPluginEntireJPropertiesLoader.java:104)
at org.entirej.framework.plugin.framework.properties.EJPluginFormProperties.getEntireJProperties(EJPluginFormProperties.java:149)
at org.entirej.framework.plugin.framework.properties.ExtensionsPropertiesFactory.createFormRendererProperties(ExtensionsPropertiesFactory.java:99)
at org.entirej.ide.ui.editors.form.FormDesignTreeSection$FormNode.getNodeDescriptors(FormDesignTreeSection.java:2349)
at org.entirej.ide.ui.nodes.NodeDescriptorPart.getDescriptors(NodeDescriptorPart.java:81)
at org.entirej.ide.ui.editors.descriptors.AbstractDescriptorPart.buildUI(AbstractDescriptorPart.java:188)
at org.entirej.ide.ui.nodes.NodeDescriptorPart.showDetails(NodeDescriptorPart.java:115)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection.showNodeDetails(AbstractNodeTreeSection.java:737)
at org.entirej.ide.ui.editors.form.FormDesignTreeSection.showNodeDetails(FormDesignTreeSection.java:226)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection.showNodeDetails(AbstractNodeTreeSection.java:730)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection$4.selectionChanged(AbstractNodeTreeSection.java:424)
at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4404)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1173)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4202)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3790)
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:663)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:570)
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:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
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:668)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
at org.eclipse.equinox.launcher.Main.main(Main.java:1454)

错误2:空指针异常

eclipse.buildId=4.34.0.20241128-0756
java.version=23.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_GB
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 
file:/C:/Users/(username)/eclipse-workspace/

org.eclipse.jface
Error
Sat Feb 01 12:54:18 GMT 2025
Problems occurred when invoking code from plug-in: 
"org.eclipse.jface".

java.lang.NullPointerException: Cannot invoke "org.entirej.framework.plugin.framework.properties.EJPluginEntireJProperties.getFormRendererContainer()" because "entireJProperties" is null
at org.entirej.framework.plugin.framework.properties.ExtensionsPropertiesFactory.loadFormRendererDefinition(ExtensionsPropertiesFactory.java:594)
at org.entirej.framework.plugin.framework.properties.ExtensionsPropertiesFactory.createFormRendererProperties(ExtensionsPropertiesFactory.java:99)
at org.entirej.ide.ui.editors.form.FormDesignTreeSection$FormNode.getNodeDescriptors(FormDesignTreeSection.java:2349)
at org.entirej.ide.ui.nodes.NodeDescriptorPart.getDescriptors(NodeDescriptorPart.java:81)
at org.entirej.ide.ui.editors.descriptors.AbstractDescriptorPart.buildUI(AbstractDescriptorPart.java:188)
at org.entirej.ide.ui.nodes.NodeDescriptorPart.showDetails(NodeDescriptorPart.java:115)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection.showNodeDetails(AbstractNodeTreeSection.java:737)
at org.entirej.ide.ui.editors.form.FormDesignTreeSection.showNodeDetails(FormDesignTreeSection.java:226)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection.showNodeDetails(AbstractNodeTreeSection.java:730)
at org.entirej.ide.ui.nodes.AbstractNodeTreeSection$4.selectionChanged(AbstractNodeTreeSection.java:424)
at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4404)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1173)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4202)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3790)
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:663)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:570)
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:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
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:668)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
at org.eclipse.equinox.launcher.Main.main(Main.java:1454)

快速修复方案(10分钟内完成)

方案1:补全缺失的核心配置文件

从错误日志看,所有问题根源是项目缺少/(ProjectName)/src/application.ejprop(EntireJ框架的核心配置文件),导致entireJProperties为空:

  1. 从项目主分支或其他正常运行的分支中复制一份application.ejprop到当前分支的src目录
  2. 重启Eclipse,重新打开.form文件验证

方案2:降级Eclipse版本适配插件

当前使用的Eclipse 4.34(2024-12)版本过高,可能与旧版EntireJ插件不兼容:

  1. 关闭当前Eclipse,下载Eclipse 2023-09(4.29)Java包(直接解压到新目录,无需卸载现有版本)
  2. 导入当前项目分支,重新打开.form文件

方案3:直接编辑.form XML文件

若仅需简单更新表单,可跳过设计器直接编辑XML:

  1. 右键.form文件,选择「Open With」→「Text Editor」
  2. 手动修改XML中的表单配置(如字段、布局),保存后即可生效

内容的提问来源于stack exchange,提问作者Willicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:40:55