首页 > 解决方案 > JavaFX Windows Native Image HelloFX 示例失败:java.lang.NoSuchMethodError: com.sun.glass.ui.win.WinView.notifyResize(II)V

问题描述

我尝试构建并启动 Gluons HelloFX 示例作为 Windows 的本机映像。构建成功,但启动生成的可执行文件失败,出现以下异常:

==================== RUN TASK ====================
[SUB] Nov 01, 2021 10:33:41 PM com.sun.javafx.application.PlatformImpl startup
[SUB] WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @60723d6a'
[SUB] Exception in Application start method
[SUB] Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
[SUB]     at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
[SUB]     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
[SUB]     at java.lang.Thread.run(Thread.java:829)
[SUB]     at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:552)
[SUB]     at com.oracle.svm.core.windows.WindowsJavaThreads.osThreadStartRoutine(WindowsJavaThreads.java:138)
[SUB] Caused by: java.lang.NoSuchMethodError: com.sun.glass.ui.win.WinView.notifyResize(II)V
[SUB]     at com.oracle.svm.jni.functions.JNIFunctions$Support.getMethodID(JNIFunctions.java:1104)
[SUB]     at com.oracle.svm.jni.functions.JNIFunctions$Support.getMethodID(JNIFunctions.java:1089)
[SUB]     at com.oracle.svm.jni.functions.JNIFunctions.GetMethodID(JNIFunctions.java:410)
[SUB]     at com.sun.glass.ui.win.WinView._initIDs(WinView.java)
[SUB]     at com.sun.glass.ui.win.WinView.<clinit>(WinView.java:43)
[SUB]     at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:375)
[SUB]     at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:295)
[SUB]     at com.sun.glass.ui.win.WinApplication.createView(WinApplication.java:237)
[SUB]     at com.sun.javafx.tk.quantum.ViewScene.<init>(ViewScene.java:54)
[SUB]     at com.sun.javafx.tk.quantum.WindowStage.createTKScene(WindowStage.java:263)
[SUB]     at javafx.scene.Scene.initPeer(Scene.java:817)
[SUB]     at javafx.scene.Scene$2.initPeer(Scene.java:406)
[SUB]     at com.sun.javafx.scene.SceneHelper.initPeer(SceneHelper.java:74)
[SUB]     at javafx.stage.Window$12.invalidated(Window.java:1112)
[SUB]     at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:110)
[SUB]     at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:145)
[SUB]     at javafx.stage.Window.setShowing(Window.java:1190)
[SUB]     at javafx.stage.Window.show(Window.java:1205)
[SUB]     at javafx.stage.Stage.show(Stage.java:273)
[SUB]     at hellofx.HelloFX.start(HelloFX.java:55)
[SUB]     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
[SUB]     at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
[SUB]     at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
[SUB]     at java.security.AccessController.doPrivileged(AccessController.java:105)
[SUB]     at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
[SUB]     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
[SUB]     at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST:Ljava_lang_Runnable_2_0002erun_00028_00029V(JNIJavaCallWrappers.java:0)
[SUB]     at com.sun.glass.ui.win.WinApplication._runLoop(WinApplication.java)
[SUB]     at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
[SUB]     ... 3 more

这不是我遇到的第一个例外。在此之前我得到:我用这里
Can't find bundle for base name com/sun/glass/ui/win/themes, locale en_US
的答案解决了这个问题。

我严格按照Gluon 文档中的说明进行操作。

我做过的事情:

这一切都奏效了。但最后一步 - 运行应用程序 - 失败了:mvn gluonfx:nativerun

到目前为止我做了什么:

操作系统是 Windows 10 Pro 64 位。

标签: windowsjavafxgluongraalvm-native-imagegluonfx

解决方案


推荐阅读