我如何通过尝试使用旅程浏览器解决此NPE

问题描述

我使用found a bug here在eclipse中建立了一个简单的maven项目,使用页面上提供的依赖项,我试图运行代码示例(也在页面上提供)

我得到了NPE:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.base/java.lang.class.forName0(Native Method)
    at java.base/java.lang.class.forName(Class.java:315)
    at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:588)
    at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:583)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:582)
    at java.desktop/java.awt.Toolkit.getEventQueue(Toolkit.java:1494)
    at java.desktop/java.awt.EventQueue.isdispatchThread(EventQueue.java:1086)
    at java.desktop/javax.swing.SwingUtilities.isEventdispatchThread(SwingUtilities.java:1493)
    at com.codebrig.journey.journeybrowserView.<init>(journeybrowserView.java:78)
    at com.codebrig.journey.journeybrowserView.<init>(journeybrowserView.java:71)
    at journeybrowser.main(journeybrowser.java:13)
Caused by: java.lang.NullPointerException
    at java.base/java.lang.classLoader.loadLibrary(ClassLoader.java:2646)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
    at java.base/java.lang.System.loadLibrary(System.java:1870)
    at java.desktop/sun.awt.windows.WToolkit$1.run(WToolkit.java:118)
    at java.desktop/sun.awt.windows.WToolkit$1.run(WToolkit.java:115)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/sun.awt.windows.WToolkit.loadLibraries(WToolkit.java:114)
    at java.desktop/sun.awt.windows.WToolkit.<clinit>(WToolkit.java:129)
    ... 12 more

任何人都可以解释发生了什么,为什么在这里,我已经在64位Windows上使用Java Coretto 11(jdk11.0.7_10)进行了尝试,我最初是{{3}},与开放JDK中的loadLibray有关,并认为问题,我只是没有足够的了解来解决该问题?

解决方法

我不确定,但是我认为Corretto错误可能是导致问题的原因。如前所述,它来自他们的“上游”。即OpenJDK代码库。归因于jdk11.0.7中出现的回归是由于另一个问题的修复程序的反向移植。显然,此修复程序更改了一些内部JDK字段,并破坏了应用程序代码。正如JDK-8240521所说:

JDK-8231584的反向端口更改了内部JDK字段处理。问题在于,许多第三方应用程序复制粘贴了依赖于特定JDK实现的黑客。

如果我正确地读取了Oracle错误条目,则应该在JDK11.0.8中还原已损坏的修复程序。另外,早于11.0.7的JDK 11版本不应该具有已损坏的修复程序。

让我知道更改Java 11安装是否可以解决问题。 (如果没有,我将查看是否可以使行号匹配。)