--- old/modules/jdk.packager/src/main/java/jdk/packager/internal/JLinkBundlerHelper.java 2016-08-24 10:18:16.000000000 -0700 +++ new/modules/jdk.packager/src/main/java/jdk/packager/internal/JLinkBundlerHelper.java 2016-08-24 10:18:16.000000000 -0700 @@ -76,11 +76,13 @@ import jdk.packager.internal.Module; -public class JLinkBundlerHelper { +public final class JLinkBundlerHelper { private static final ResourceBundle I18N = ResourceBundle.getBundle(JLinkBundlerHelper.class.getName()); + private JLinkBundlerHelper() {} + @SuppressWarnings("unchecked") public static final BundlerParamInfo> MODULE_PATH = new StandardBundlerParam<>( @@ -88,7 +90,7 @@ I18N.getString("param.module-path.description"), "module-path", (Class>) (Object)List.class, - p -> new ArrayList(), + p -> {setupDefaultModulePathIfNecessary(p); return new ArrayList();}, (s, p) -> Arrays.asList(s.split("[;:]")).stream() .map(ss -> new File(ss).toPath()) .collect(Collectors.toList())); @@ -185,7 +187,7 @@ return Integer.valueOf(s); }); - public static String ListOfPathToString(List value) { + public static String listOfPathToString(List value) { String result = ""; for (Path path : value) { @@ -199,7 +201,7 @@ return result; } - public static String SetOfStringToString(Set value) { + public static String setOfStringToString(Set value) { String result = ""; for (String element : value) { @@ -274,8 +276,7 @@ public static String getJDKVersion(Map params) { String result = ""; List modulePath = MODULE_PATH.fetchFrom(params); - Path jdkModulePath = setupDefaultModulePathIfNecessary(modulePath); - Path javaBasePath = jdkModulePath.resolve("java.base.jmod"); + Path javaBasePath = findPathOfModule(modulePath, "java.base.jmod"); if (javaBasePath != null && javaBasePath.toFile().exists()) { result = RedistributableModules.getModuleVersion(javaBasePath.toFile(), @@ -286,6 +287,18 @@ return result; } + public static Path getJDKHome(Map params) { + Path result = null; + List modulePath = MODULE_PATH.fetchFrom(params); + Path javaBasePath = findPathOfModule(modulePath, "java.base.jmod"); + + if (javaBasePath != null && javaBasePath.toFile().exists()) { + result = javaBasePath.getParent(); + } + + return result; + } + public static void execute(Map params, AbstractAppImageBuilder imageBuilder) throws IOException, Exception { List modulePath = MODULE_PATH.fetchFrom(params); Set addModules = ADD_MODULES.fetchFrom(params); @@ -295,7 +308,6 @@ Path outputDir = imageBuilder.getRoot(); String excludeFileList = imageBuilder.getExcludeFileList(); Set jars = getResourceFileJarList(params, Module.JarType.UnnamedJar); - setupDefaultModulePathIfNecessary(modulePath); File mainJar = getMainJar(params); Module.ModuleType mainJarType = Module.ModuleType.Unknown; @@ -372,30 +384,25 @@ return result; } - private static Path setupDefaultModulePathIfNecessary(List modulePath) { - Path result = null; + private static void setupDefaultModulePathIfNecessary(Map params) { + List modulePath = MODULE_PATH.fetchFrom(params); Path userDefinedJdkModulePath = findPathOfModule(modulePath, "java.base.jmod"); - //TODO Fix JDK-8158977 - // Add the default JDK module path to the module path. - if (userDefinedJdkModulePath != null) { - result = userDefinedJdkModulePath; - } - else { + if (userDefinedJdkModulePath == null) { Path jdkModulePath = Paths.get(System.getProperty("java.home"), "jmods").toAbsolutePath(); if (jdkModulePath != null && Files.exists(jdkModulePath)) { - result = jdkModulePath; - modulePath.add(result); + modulePath.add(jdkModulePath); + params.put(MODULE_PATH.getID(), listOfPathToString(modulePath)); } } - if (result == null) { + Path javaBasePath = findPathOfModule(modulePath, "java.base.jmod"); + + if (javaBasePath == null || !javaBasePath.toFile().exists()) { Log.info(String.format(I18N.getString("warning.no.jdk.modules.found"))); } - - return result; } private static Set getResourceFileJarList(Map params, Module.JarType Query) {