diff -r d5992bef7aa9 -r 6972c0e75e23 src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Fri Sep 21 09:30:03 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Fri Sep 21 09:32:02 2018 -0400 @@ -88,7 +88,7 @@ String updateMode = "background"; boolean isExtension = false; boolean isSwingApp = false; - + boolean jreInstaller = false; Boolean needShortcut = null; @@ -490,6 +490,21 @@ throw new PackagerException("ERR_MissingArgument", "--main-jar"); } } + + // Validate app image if set + String appImage = (String)bundlerArguments.get(Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId()); + if (appImage != null) { + File appImageDir = new File(appImage); + if (!appImageDir.exists()) { + throw new PackagerException("ERR_AppImageNotExist", appImage); + } + + File appImageAppDir = new File(appImage + File.separator + "app"); + File appImageRuntimeDir = new File(appImage + File.separator + "runtime"); + if (!appImageAppDir.exists() || !appImageRuntimeDir.exists()) { + throw new PackagerException("ERR_AppImageInvalid", appImage); + } + } } public boolean validateForBundle() { @@ -662,7 +677,7 @@ Map unescapedHtmlParams = new TreeMap<>(); Map escapedHtmlParams = new TreeMap<>(); - + // check for collisions TreeSet keys = new TreeSet<>(bundlerArguments.keySet()); keys.retainAll(bundleParams.getBundleParamsAsMap().keySet());