void (Throwable e) { if (e != null) { LOG.info(e); } removeSceneBuilder(); if (JavaVersion.current().feature > 11 && e instanceof NoClassDefFoundError && !SceneBuilderUtil.getSceneBuilder11Path().toFile().isFile()) { myErrorLabel.addHyperlinkListener(e1 -> { DownloadableFileService service = DownloadableFileService.getInstance(); DownloadableFileDescription description = service.createFileDescription("https://cache-redirector.jetbrains.com/" + "intellij-dependencies/org/jetbrains/intellij/deps/scenebuilderkit/" + SceneBuilderUtil.SCENE_BUILDER_VERSION + "/" + SceneBuilderUtil.SCENE_BUILDER_KIT_FULL_NAME, SceneBuilderUtil.SCENE_BUILDER_KIT_FULL_NAME); FileDownloader downloader = service.createDownloader(Collections.singletonList(description), "Scene Builder Kit"); try { Path tempDir = Files.createTempDirectory("" ); List<Pair<VirtualFile, DownloadableFileDescription>> list = downloader.downloadWithProgress(tempDir.toString(), myProject, myErrorPanel); if (list == null || list.isEmpty()) { myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.download.kit.error"), "", ""); setErrorIcon(); return; } FileUtil.copy(VfsUtilCore.virtualToIoFile(list.get(0).first), SceneBuilderUtil.getSceneBuilder11Path().toFile()); FileUtil.delete(tempDir.toFile()); SceneBuilderUtil.updateLoader(); updateState(); } catch (IOException e2) { LOG.warn("Can't download SceneBuilderKit", e2); } }); myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"), JavaFXBundle.message("javafx.scene.builder.editor.download.scene.builder.kit"), ""); setErrorIcon(); myLayout.show(myPanel, ERROR_CARD); return; } if (JavaVersion.current().feature > 11) { try { Class.forName(JavaFxCommonNames.JAVAFX_SCENE_NODE); } catch (ClassNotFoundException exception) { myErrorLabel.addHyperlinkListener(e1 -> { downloadJavaFxDependencies(); }); myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"), JavaFXBundle.message("javafx.scene.builder.editor.download.javafx"), ""); setErrorIcon(); myLayout.show(myPanel, ERROR_CARD); return; } } final String description; if (e != null) { final List<String> messages = new ArrayList<>(); for (Throwable t = e; t != null && t != t.getCause(); t = t.getCause()) { final String message = getErrorMessage(t); if (messages.isEmpty() || !messages.get(messages.size() - 1).contains(message)) { messages.add(message); } else { messages.set(messages.size() - 1, message); } } Collections.reverse(messages); description = "\n" + String.join("\n\n", messages); } else { description = "Unknown error occurred"; } myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"), "", ""); setErrorIcon(); myErrorStack.setText(description); myErrorStack.setVisible(true); myLayout.show(myPanel, ERROR_CARD); }