From eb1a109afcc59bfe598de622f48c74191e090e4b Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Mon, 5 Mar 2018 20:36:38 +0800 Subject: [PATCH] Fix IllegalArgumentException: Folder parameter must be a valid folder --- HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java | 3 ++- .../jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java | 3 +++ HMCLCore/src/main/java/org/jackhuang/hmcl/util/ZipEngine.java | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java index 7c5ea4805..c69ded871 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/MainPage.java @@ -127,7 +127,8 @@ public final class MainPage extends StackPane implements DecoratorPage { Controllers.dialog(Launcher.i18n("login.empty_username")); else { FileChooser chooser = new FileChooser(); - chooser.setInitialDirectory(repository.getRunDirectory(id)); + if (repository.getRunDirectory(id).isDirectory()) + chooser.setInitialDirectory(repository.getRunDirectory(id)); chooser.setTitle(Launcher.i18n("version.launch_script.save")); chooser.getExtensionFilters().add(OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS ? new FileChooser.ExtensionFilter(Launcher.i18n("extension.bat"), "*.bat") diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java index 3c46bf7c9..16910cc5f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackFileSelectionPage.java @@ -66,6 +66,9 @@ public final class ModpackFileSelectionPage extends StackPane implements WizardP } private CheckBoxTreeItem getTreeItem(File file, String basePath) { + if (!file.exists()) + return null; + ModAdviser.ModSuggestion state = ModAdviser.ModSuggestion.SUGGESTED; if (basePath.length() > "minecraft/".length()) { state = adviser.advise(StringUtils.substringAfter(basePath, "minecraft/") + (file.isDirectory() ? "/" : ""), file.isDirectory()); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ZipEngine.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ZipEngine.java index ba11d3712..c121b576c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ZipEngine.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/ZipEngine.java @@ -70,10 +70,10 @@ public final class ZipEngine implements Closeable { * modified pathName, null if you dont want this file zipped */ private void putDirectoryImpl(File source, String basePath, BiFunction pathNameCallback) throws IOException { - File[] files; + File[] files = null; if (source.isDirectory()) files = source.listFiles(); - else + else if (source.isFile()) files = new File[] { source }; if (files == null)