OpenBLCMM icon indicating copy to clipboard operation
OpenBLCMM copied to clipboard

Object Explorer on Mac requires at least Java 17 (or really 14+)

Open apocalyptech opened this issue 1 year ago • 0 comments

System Info Operating System: Mac / OSX

Describe the bug Launching OE using Java 8 on Mac yields the following:

2024-01-30 21:46:04 blcmm.gui.ObjectExplorer.<init>(ObjectExplorer.java:103) -> Opened Object Explorer
2024-01-30 21:46:04 blcmm.Startup$MyExceptionHandler.logError(Startup.java:388) -> class java.lang.NullPointerException: null
    blcmm.gui.panels.ObjectExplorerPanel$3.<init>(ObjectExplorerPanel.java:245)
    blcmm.gui.panels.ObjectExplorerPanel.initBookmarks(ObjectExplorerPanel.java:244)
    blcmm.gui.panels.ObjectExplorerPanel.<init>(ObjectExplorerPanel.java:233)
    blcmm.gui.ObjectExplorer$OETabbedPane.getDefaultNewComponent(ObjectExplorer.java:812)
    blcmm.gui.ObjectExplorer$OETabbedPane.getDefaultNewComponent(ObjectExplorer.java:804)
    blcmm.gui.components.VariableTabsTabbedPane.<init>(VariableTabsTabbedPane.java:70)
    blcmm.gui.ObjectExplorer$OETabbedPane.<init>(ObjectExplorer.java:807)
    blcmm.gui.ObjectExplorer.initComponents(ObjectExplorer.java:313)
    blcmm.gui.ObjectExplorer.<init>(ObjectExplorer.java:104)
    blcmm.gui.MainGUI.lambda$launchObjectExplorerWindow$9(MainGUI.java:2445)
    java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    java.awt.EventQueue.access$500(EventQueue.java:97)
    java.awt.EventQueue$3.run(EventQueue.java:709)
    java.awt.EventQueue$3.run(EventQueue.java:703)
    java.security.AccessController.doPrivileged(Native Method)
    java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

This turns out to be due to this bug: https://bugs.openjdk.org/browse/JDK-7124404 -- Basically, Mac Java does not have an awt.multiClickInterval property in their default toolkit, and it ends up throwing an NPE. Judging from that bug, that was added in in Java 14, so Java 17 would be our minimum-supported to run OE.

It could be that there's some ways to bypass this; I've got to look to even see what we're using that property for. Possibly we could just do without, instead?

Regardless, it's one of two solutions: 1) bypass the property, or 2) update the docs to say that Mac users need to be on Java 17+.

apocalyptech avatar Jan 31 '24 05:01 apocalyptech