知道如何解决这个问题吗?线程异常 "WindowsNativeRunloopThread" java.lang.NoSuchMethodError
Any idea how to fix this? Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError
我的应用程序使用 javafx 11.0.1 并与 jlinked 版本的 openjdk 11 捆绑在一起。它对绝大多数用户来说运行良好,但很少有人得到这个堆栈:
Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError: <init>
at com.sun.glass.ui.win.WinApplication.staticScreen_getScreens(Native Method)
at com.sun.glass.ui.Screen.initScreens(Screen.java:412)
at com.sun.glass.ui.Application.lambda$run(Application.java:152)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop(WinApplication.java:174)
at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters(QuantumToolkit.java:695)
at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:313)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup(QuantumToolkit.java:258)
at com.sun.glass.ui.Application.lambda$run(Application.java:153)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop(WinApplication.java:174)
at java.base/java.lang.Thread.run(Unknown Source)
我发现了一些与相同异常相关但关于 Maven+Eclipse 的讨论,here and here。这个问题非常相似,用户报告它,确实有其他 java 安装并卸载它们解决了问题,所以基本上将我捆绑的 openjdk 作为应用程序启动的唯一选项,但如果有另一个 Java安装在系统上,错误的 .dll 被拾取并且应用程序崩溃并出现上述堆栈跟踪。
我尝试了建议的 java.library.path
解决方法,但用户说它没有解决。不幸的是,我无法自己重现它,关于如何解决它或向报告它的用户提出什么问题有什么想法吗?
编辑:我们修复了由 lauch4j here and the bash script here 生成的 exe。这个想法基本上是 restrict/change PATH
env 变量,以避免错误的 dll 被拾取。
我的应用程序使用 javafx 11.0.1 并与 jlinked 版本的 openjdk 11 捆绑在一起。它对绝大多数用户来说运行良好,但很少有人得到这个堆栈:
Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError: <init>
at com.sun.glass.ui.win.WinApplication.staticScreen_getScreens(Native Method)
at com.sun.glass.ui.Screen.initScreens(Screen.java:412)
at com.sun.glass.ui.Application.lambda$run(Application.java:152)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop(WinApplication.java:174)
at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters(QuantumToolkit.java:695)
at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:313)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup(QuantumToolkit.java:258)
at com.sun.glass.ui.Application.lambda$run(Application.java:153)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop(WinApplication.java:174)
at java.base/java.lang.Thread.run(Unknown Source)
我发现了一些与相同异常相关但关于 Maven+Eclipse 的讨论,here and here。这个问题非常相似,用户报告它,确实有其他 java 安装并卸载它们解决了问题,所以基本上将我捆绑的 openjdk 作为应用程序启动的唯一选项,但如果有另一个 Java安装在系统上,错误的 .dll 被拾取并且应用程序崩溃并出现上述堆栈跟踪。
我尝试了建议的 java.library.path
解决方法,但用户说它没有解决。不幸的是,我无法自己重现它,关于如何解决它或向报告它的用户提出什么问题有什么想法吗?
编辑:我们修复了由 lauch4j here and the bash script here 生成的 exe。这个想法基本上是 restrict/change PATH
env 变量,以避免错误的 dll 被拾取。