Ignore:
Timestamp:
2021-03-30T15:42:02+02:00 (4 years ago)
Author:
simon04
Message:

see #20621 - Fix JVM crash when running headless Java 8 tests on Windows

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java

    r17532 r17693  
    33
    44import java.awt.Color;
     5import java.awt.GraphicsEnvironment;
     6import java.awt.Toolkit;
    57import java.awt.Window;
    68import java.awt.event.WindowEvent;
     
    1517import java.lang.annotation.RetentionPolicy;
    1618import java.lang.annotation.Target;
     19import java.lang.reflect.Method;
    1720import java.nio.charset.StandardCharsets;
    1821import java.security.GeneralSecurityException;
     
    2225import java.util.TimeZone;
    2326import java.util.logging.Handler;
     27import java.util.logging.Level;
    2428
    2529import org.awaitility.Awaitility;
     
    7074import org.openstreetmap.josm.tools.Logging;
    7175import org.openstreetmap.josm.tools.MemoryManagerTest;
     76import org.openstreetmap.josm.tools.PlatformManager;
    7277import org.openstreetmap.josm.tools.Territories;
     78import org.openstreetmap.josm.tools.Utils;
    7379import org.openstreetmap.josm.tools.bugreport.ReportedException;
    7480import org.openstreetmap.josm.tools.date.DateUtils;
     
    614620                }
    615621
     622                workaroundJdkBug8159956();
    616623                new MainApplication();
    617624                JOSMFixture.initContentPane();
     
    620627                JOSMFixture.initMainMenu();
    621628            }
     629        }
     630    }
     631
     632    private void workaroundJdkBug8159956() {
     633        try {
     634            if (PlatformManager.isPlatformWindows() && Utils.getJavaVersion() == 8 && GraphicsEnvironment.isHeadless()) {
     635                // https://bugs.openjdk.java.net/browse/JDK-8159956
     636                Method initIDs = Toolkit.class.getDeclaredMethod("initIDs");
     637                initIDs.setAccessible(true);
     638                initIDs.invoke(Toolkit.getDefaultToolkit());
     639            }
     640        } catch (Exception e) {
     641            Logging.log(Level.WARNING, "Failed to Toolkit.initIDs", e);
    622642        }
    623643    }
Note: See TracChangeset for help on using the changeset viewer.