--- old/src/java.base/share/classes/java/util/jar/JarFile.java 2018-10-08 11:58:52.000000000 -0700 +++ new/src/java.base/share/classes/java/util/jar/JarFile.java 2018-10-08 11:58:52.000000000 -0700 @@ -556,7 +556,8 @@ return JUZFA.entryNameStream(this).map(this::getBasename) .filter(Objects::nonNull) .distinct() - .map(this::getJarEntry); + .map(this::getJarEntry) + .filter(Objects::nonNull); } return stream(); } --- old/test/jdk/java/util/jar/JarFile/mrjar/TestVersionedStream.java 2018-10-08 11:58:54.000000000 -0700 +++ new/test/jdk/java/util/jar/JarFile/mrjar/TestVersionedStream.java 2018-10-08 11:58:54.000000000 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 8163798 8189611 + * @bug 8163798 8189611 8211728 * @summary basic tests for multi-release jar versioned streams * @library /test/lib * @modules jdk.jartool/sun.tools.jar java.base/jdk.internal.util.jar @@ -82,7 +82,8 @@ "v10/p/Foo.class", "v10/q/Bar.class", "v" + LATEST_VERSION + "/p/Bar.class", - "v" + LATEST_VERSION + "/p/Foo.class" + "v" + LATEST_VERSION + "/p/Foo.class", + "v" + LATEST_VERSION + "/META-INF/Foo.class" ); jar("cf mmr.jar -C base . " + @@ -224,6 +225,11 @@ throw new UncheckedIOException(x); } }); + + if (!unversionedEntryNames.contains("META-INF/Foo.class") || + versionedNames.indexOf("META-INF/Foo.class") != -1) { + Assert.fail("versioned META-INF/Foo.class test failed"); + } } }