--- core/src/org/netbeans/core/LookupCache.java +++ core/src/org/netbeans/core/LookupCache.java @@ -263,11 +263,18 @@ if (bangSlash != -1) { // underlying URL inside jar:, generally file: + // XXX why is this not using FileUtil.getArchiveFile? try { URI layerJarURL = new URI(s.substring(4, bangSlash)); if ("file".equals(layerJarURL.getScheme())) { + { // #121777 + String s2 = layerJarURL.toString(); + if (s2.startsWith("file:") && !s2.startsWith("file:/")) { + layerJarURL = new URI("file:/" + s2.substring(5)); + } + } files.add(new File(layerJarURL)); } else { err.warning( --- core/startup/src/org/netbeans/core/startup/ModuleSystem.java +++ core/startup/src/org/netbeans/core/startup/ModuleSystem.java @@ -196,14 +196,18 @@ continue; } URL jarURL = FileUtil.getArchiveFile(manifestUrl); + if (jarURL != null && jarURL.getProtocol().equals("file") && + /* #121777 */ jarURL.getPath().startsWith("/")) { + LOG.log(Level.FINE, "Considering JAR: {0}", jarURL); try { - if (jarURL != null && jarURL.getProtocol().equals("file") && ignoredJars.contains(new File(jarURL.toURI()))) { + if (ignoredJars.contains(new File(jarURL.toURI()))) { LOG.log(Level.FINE, "ignoring JDK/JRE manifest: {0}", manifestUrl); continue MANIFESTS; } } catch (URISyntaxException x) { Exceptions.printStackTrace(x); } + } LOG.log(Level.FINE, "Checking boot manifest: {0}", manifestUrl); InputStream is;