From ecfae530d1d90303772783fd2b8feefaa1161825 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 20 Aug 2018 17:07:57 +0200 Subject: [PATCH] Fix exception trying to use Messages before Application has been initialized (IDEA-196469) --- .../src/com/intellij/openapi/ui/Messages.java | 2 +- .../openapi/ui/messages/MessagesService.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java index 86d0dae8a641..66a328a1b986 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java @@ -224,7 +224,7 @@ public class Messages { } public static boolean canShowMacSheetPanel() { - return SystemInfo.isMac && !isApplicationInUnitTestOrHeadless() && Registry.is("ide.mac.message.dialogs.as.sheets"); + return SystemInfo.isMac && ApplicationManager.getApplication() != null && !isApplicationInUnitTestOrHeadless() && Registry.is("ide.mac.message.dialogs.as.sheets"); } public static boolean isMacSheetEmulation() { diff --git a/platform/platform-api/src/com/intellij/openapi/ui/messages/MessagesService.java b/platform/platform-api/src/com/intellij/openapi/ui/messages/MessagesService.java index 015be10313b0..699290ae8204 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/messages/MessagesService.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/messages/MessagesService.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.openapi.ui.messages; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -93,6 +94,15 @@ public interface MessagesService { Function, String> lineJoiner); static MessagesService getInstance() { + if (ApplicationManager.getApplication() != null) { return ServiceManager.getService(MessagesService.class); } -} \ No newline at end of file + + try { + return (MessagesService) MessagesService.class.getClassLoader().loadClass("com.intellij.ui.messages.MessagesServiceImpl").newInstance(); + } + catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + } +}