Source:
<code>protected ArrayList handleBootclasspath(ArrayList bootclasspaths, String customEncoding) { final int bootclasspathsSize; if ((bootclasspaths != null) && ((bootclasspathsSize = bootclasspaths.size()) != 0)) { explicitBootClasspath = true; String[] paths = new String[bootclasspathsSize]; bootclasspaths.toArray(paths); bootclasspaths.clear(); for (int i = 0; i < bootclasspathsSize; i++) { processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths, paths[i], customEncoding, false, true); } } else { bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); if (javaHome != null) { File directoryToCheck; <START> if (isMacOS() && new File(javaHome, "../Classes").isDirectory()) { END> directoryToCheck = new File(javaHome, "../Classes"); } else { directoryToCheck = new File(javaHome, "lib"); } scanForArchives(bootclasspaths, directoryToCheck); if (bootclasspaths.isEmpty()) { mavenLogger.warn("No classpath entries for boot classpath found scanning java home " + javaHome); } } else { try { Util.collectRunningVMBootclasspath(bootclasspaths); } catch (IllegalStateException e) { this.logger.logWrongJDK(); this.proceed = false; return null; } } } if (bootclasspathAccessRules != null) { String[] paths = new String[bootclasspaths.size()]; for (int i = 0; i < bootclasspaths.size(); i++) { paths[i] = ((FileSystem.Classpath) bootclasspaths.get(i)).getPath() + bootclasspathAccessRules; } bootclasspaths.clear(); for (int i = 0; i < paths.length; i++) { processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths, paths[i], customEncoding, false, true); } } mavenLogger.debug("Using boot classpath: " + bootclasspaths); return bootclasspaths; }</code><technical_language>check for a file? empty directory affect build result e.g. git show a change. Okay, git is a good argument for a JVM installation, uneasy feeling persists</technical_language>

Target:
protected ArrayList handleBootclasspath(ArrayList bootclasspaths, String customEncoding) { final int bootclasspathsSize; if ((bootclasspaths != null) && ((bootclasspathsSize = bootclasspaths.size()) != 0)) { explicitBootClasspath = true; String[] paths = new String[bootclasspathsSize]; bootclasspaths.toArray(paths); bootclasspaths.clear(); for (int i = 0; i < bootclasspathsSize; i++) { processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths, paths[i], customEncoding, false, true); } } else { bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); if (javaHome != null) { File directoryToCheck; if (isMacOS() && hasClassesDirWithJars()) { directoryToCheck = new File(javaHome, "../Classes"); } else { directoryToCheck = new File(javaHome, "lib"); } scanForArchives(bootclasspaths, directoryToCheck); if (bootclasspaths.isEmpty()) { mavenLogger.warn("No classpath entries for boot classpath found scanning java home " + javaHome); } } else { try { Util.collectRunningVMBootclasspath(bootclasspaths); } catch (IllegalStateException e) { this.logger.logWrongJDK(); this.proceed = false; return null; } } } if (bootclasspathAccessRules != null) { String[] paths = new String[bootclasspaths.size()]; for (int i = 0; i < bootclasspaths.size(); i++) { paths[i] = ((FileSystem.Classpath) bootclasspaths.get(i)).getPath() + bootclasspathAccessRules; } bootclasspaths.clear(); for (int i = 0; i < paths.length; i++) { processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths, paths[i], customEncoding, false, true); } } mavenLogger.debug("Using boot classpath: " + bootclasspaths); return bootclasspaths; }