Mac OS和java.awt.Window.init(Window.java:497)上的java.lang.NullPointerException

Han*_*sip 5 java macos

我一直在为Java开发设置2018 MacBook Pro。它正在运行Mojave 10.14.1-就像我要迁移的旧计算机一样,是2013年初的MacBook Pro。我安装了Java 1.8.0_192,并立即注意到我无法启动jar或任何在此Mac上具有UI的Java应用程序。我卸载并尝试了以下每个工具:1.8.0_172,1.8.0_191,1.8.0_192和11.0.1。我进一步跟踪了问题,发现了一个常见错误:

Caused by: java.lang.NullPointerException
  at java.awt.Window.init(Window.java:497)
  at java.awt.Window.<init>(Window.java:537)
  at java.awt.Frame.<init>(Frame.java:420)
  at java.awt.Frame.<init>(Frame.java:385)
  at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1763)
  at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1838)
  at javax.swing.JWindow.<init>(JWindow.java:187)
  at javax.swing.JWindow.<init>(JWindow.java:139) 
Run Code Online (Sandbox Code Playgroud)

很好奇,我发布了基于Swing的产品,并报告了相同的错误。我用谷歌搜索,只找到未回答的帖子。

(将其修改为问题而不是博客文章)

是什么赋予了?

小智 8

我有同样的问题,我在这里发现

就我而言,我在MacBook Pro和DisplayLink驱动程序上使用扩展坞进行扩展显示。这使Jmeter崩溃了。

解决方法是断开笔记本电脑与扩展坞的连接,然后启动应用程序。

  • 我看了你的报告,并建议你向苹果报告。我通过 JVM 深入跟踪了这一点,发现操作系统没有返回兼容的图形模式。如果操作系统没有将图形模式返回给 JVM,那么当您进入这种情况时,JVM 将永远无法工作。 (2认同)
  • 对我来说,我可以通过打开我的笔记本电脑来启动我感兴趣的应用程序,使其显示屏处于活动状态,然后启动该应用程序。我不必断开连接。一旦应用程序启动,我就可以再次关闭笔记本电脑并在显示器上使用该应用程序 (2认同)

Han*_*sip 7

解决此问题的方法很简单,但并非立即显而易见。

我深入研究JVM,发现本机代码无法从OS识别兼容的图形模式。这将导致null GraphicsConfiguration。这不好-它会在Window.java中导致NullPointerException ...猜测一行。(第497行)

我怀疑操作系统没有返回有关其图形设置的正确信息,然后开始怀疑图形驱动程序。那是我记得Mac具有参数RAM(PRAM)和非易失性RAM(NVRAM)的时候。

我切换了PRAM和NVRAM,现在机器运行正常!

要更改PRAM和NVRAM:

  1. 关闭你的mac
  2. 在按住Option + Command + P + R的同时重新启动
  3. 按住这些按钮,直到Mac再次出现重新启动(Apple徽标将出现,消失并重新出现)

如果您的Mac启动时没有消失的Mac徽标,请将其关闭,然后重试。

在Mac上重置NVRAM或PRAM

希望重置PRAM对其他人有帮助!