I’ve been setting up a 2018 MacBook Pro for Java development. It’s running Mojave 10.14.1 – just like the older machine I’m migrating from, an early 2013 MacBook Pro. I installed Java 1.8.0_192 and immediately noticed that I could not launch jars or any Java app that had a UI on this mac. I uninstalled and tried each of these: 1.8.0_172, 1.8.0_191, 1.8.0_192, and 11.0.1. I traced the issue further and found a common error:
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)
Curious, I launched our Swing-based product and it reported the same error. I googled and found only unanswered posts.
(revising this to be formatted as a question and not a blog post)
What gives?
Advertisement
Answer
The solution to this problem was simple, but not immediately obvious.
I dug into the JVM and found that the native code wasn’t able to identify a compatible graphics mode from the OS. This results in a null GraphicsConfiguration. That’s not good – it causes a NullPointerException in Window.java…guess what line. (Line 497)
I suspected the OS wasn’t returning the right information about its graphics setup and then started to suspect the graphics driver. That’s when I remembered Macs have parameter RAM (PRAM) and non-volatile RAM (NVRAM).
I zapped the PRAM and NVRAM and now the machine is working fine!
To zap the PRAM and NVRAM:
- shut down your mac
- restart while holding option+command+P+R
- keep holding these until the mac appears to reboot again (the apple logo will appear, disappear, and reappear)
If your mac starts up without the disappearing mac logo, shut it down and retry.
Reset NVRAM or PRAM on your Mac
I hope resetting the PRAM helps others!