在Eclipse 4.25中搭配OpenJDK17与OpenJavaFX17运行GEF5时遇空指针异常
GEF5在JDK17+JavaFX17环境下CreationPolicy绘制图形空指针问题
我在Eclipse 4.25中搭配Open JDK 17和Open JavaFX 17搭建GEF5环境,搭建过程部分成功,但使用GEF的org.eclipse.gef.mvc.fx.policies.CreationPolicy绘制图形时出现异常,无法在画布上绘制图形。
异常信息
java.lang.NullPointerException: Cannot invoke "org.eclipse.gef.mvc.fx.parts.IContentPart.getRoot()" because "part" is null at org.eclipse.gef.mvc.fx.policies.CreationPolicy.createFocusOperation(CreationPolicy.java:217) at org.eclipse.gef.mvc.fx.policies.CreationPolicy.create(CreationPolicy.java:152) at org.eclipse.gef.mvc.fx.policies.CreationPolicy.create(CreationPolicy.java:201)
调试发现的问题
- 在
CreationPolicy.create方法(第119行)中,通过setAll操作将子Content Part添加到父级的ObservableListWrapperEx中。 - 随后执行以下代码触发事件:
helper.fireValueChangedEvent( new ListListenerHelperEx.AtomicChange<>(this, previousContents, ElementarySubChange.replaced( previousContents, delegate(), 0, size())));
- JavaFX17本应响应此事件并从内容工厂获取实际的Content Part,但在JavaFX 17的
javafx.collections.ObservableListBase.fireChange(Change<? extends E> change)方法中,该列表的listenerHelper为null,导致事件被忽略。
环境对比
在OpenJDK 11和Open JavaFX 11环境下可成功运行,事件响应符合预期。两个环境均使用GEF 5:
- JDK11环境:搭配e(fx)clipse 3.7.0与Eclipse 4.14
- JDK17环境:搭配e(fx)clipse 3.9.0与Eclipse 4.25
不确定Open JDK 17和Open JavaFX 17环境下哪里出了问题,是我的配置有误吗?
内容的提问来源于stack exchange,提问作者Rishabh Sharma
相关产品推荐
相关产品推荐

