【问题标题】:How do I solve this NPE from trying to use Journey Browser如何从尝试使用 Journey Browser 中解决此 NPE
【发布时间】:2021-01-28 16:40:50
【问题描述】:

使用journey browser project我在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) 尝试过这个,我最初 found a bug here,与 open JDK 中的 loadLibray 相关,并认为可能是问题所在,我只是没有足够的了解来解决如何解决它?

【问题讨论】:

  • 哪个精确版本的 Java 产生了该堆栈跟踪?
  • 是的......但是哪个版本产生了 >>that
  • @StephenC 我很抱歉! Eclipse 只是使用相同的运行配置,因此它可以与 Oracle 1.8 一起使用,但是我无法使用它进行部署,问题在于 Correto 11。
  • 那么你是说 Coretto 11(jdk11.0.7_10) 产生的? ('因为行号与我正在查看的 Java 11 源代码树不匹配......)
  • @StephenC 是的,没错,当我使用 Coretto 11(jdk11.0.7_10) 时,我只安装了 2 个 jdks,而 1.8 的一个正在工作,这是我得到的堆栈跟踪。

标签: java browser awt journey


【解决方案1】:

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

JDK-8231584 的反向移植更改了内部 JDK 字段处理。问题是许多第三方应用程序复制粘贴了依赖于特定 JDK 实现的 hack。

如果我正确阅读了 Oracle 错误条目,则损坏的修复的恢复应该在 JDK11.0.8 中。或者,早于 11.0.7 的 JDK 11 版本不应该有损坏的修复。

如果更改 Java 11 安装可以解决问题,请告诉我。 (如果没有,我会看看我是否可以让行号匹配。)

【讨论】:

  • 11.0.8 似乎已经克服了那个异常,我现在开始:java.lang.NoClassDefFoundError: com/jogamp/opengl/awt/GLCanvas
猜你喜欢
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 2021-08-20
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多