Hi, you need to prefix your path with /modules, so “/modules/java.desktop”. JF
On 24 Jul 2015, at 19:10, Sergey Bylokhov <sergey.bylok...@oracle.com> wrote: > After the latest merge I got some issue, I assume related to this fix. > Can somebody take a look to this code: > > import java.net.URI; > import java.nio.file.*; > import java.nio.file.attribute.BasicFileAttributes; > > public class JRTFileSystemError { > > public static void main(final String[] args) throws Exception { > FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/")); > Files.walkFileTree(fs.getPath("/java.desktop"), new > SimpleFileVisitor<Path>() { > @Override > public FileVisitResult visitFile(Path file, > BasicFileAttributes attrs) { > return FileVisitResult.CONTINUE; > } > }); > } > } > > It fails with "Exception in thread "main" java.nio.file.NoSuchFileException: > /java.desktop". > Bur previously it works correctly. Can somebody confirm this is an issue in > the test(and how to change it) or in jdk? > It seems that IntelliJ also broken in some way so it cannot take classes from > the jdk9 after this fix. probably they should update jrt-fs.jar? > > > On 23.06.15 19:08, Jean-Francois Denise wrote: >> Hi, >> an updated webrev that takes into account reviews. In addition the hotspot >> tests have been reworked following Christian Tornqvist suggestions. >> >> top: http://cr.openjdk.java.net/~jfdenise/hs-rt-jimage.3/webrev-top/ >> langtools: >> http://cr.openjdk.java.net/~jfdenise/hs-rt-jimage.3/webrev-langtools/ >> hotspot: http://cr.openjdk.java.net/~jfdenise/hs-rt-jimage.3/webrev-hotspot/ >> jdk: http://cr.openjdk.java.net/~jfdenise/hs-rt-jimage.3/webrev-jdk/ >> >> Testing: >> JCK(s) tests are passing (ran only on Mac OS) >> Hotspot tests are passing (All platforms) >> Java PIT tests are passing (All platforms). Ran once on >> https://bugs.openjdk.java.net/browse/JDK-8129592 >> >> Thanks. >> JF >> >> On 23 Jun 2015, at 14:10, Jean-Francois Denise >> <jean-francois.den...@oracle.com> wrote: >> >>> Hi Paul, >>> >>> On 19 Jun 2015, at 16:39, Paul Sandoz <paul.san...@oracle.com> wrote: >>> >>>> On Jun 18, 2015, at 2:08 AM, Jim Laskey (Oracle) <james.las...@oracle.com> >>>> wrote: >>>> >>>>> https://bugs.openjdk.java.net/browse/JDK-8080511 >>>>> >>>>> This is an long overdue refresh of the jimage support in the JDK9-dev >>>>> repo. This includes native support for reading jimage files, improved >>>>> jrt-fs (java runtime file system) support for retrieving modules and >>>>> packages from the runtime, and improved performance for langtools in the >>>>> presence of jrt-fs. >>>>> >>>>> http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top >>>>> <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top> >>>>> http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk >>>>> <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk> >>>> I eyeballed the JDK changes. Just two thing: >>>> >>>> make/src/classes/build/tools/module/ModuleArchive.java >>>> >>>> 90 @Override >>>> 91 public Stream<Entry> entries() { >>>> 92 List<Entry> entries = new ArrayList<>(); >>>> 93 try { >>>> 94 if (classes != null) >>>> 95 Files.walk(classes) >>>> 96 .sorted() >>>> 97 .filter(p -> !Files.isDirectory(p) >>>> 98 && >>>> !classes.relativize(p).toString().startsWith("_the.") >>>> 99 && >>>> !classes.relativize(p).toString().equals("javac_state")) >>>> 100 .map(p -> toEntry(p, classes, >>>> EntryType.CLASS_OR_RESOURCE)) >>>> 101 .forEach(entries::add); >>>> 102 if (cmds != null) >>>> 103 Files.walk(cmds) >>>> 104 .filter(p -> !Files.isDirectory(p)) >>>> 105 .map(p -> toEntry(p, cmds, >>>> EntryType.NATIVE_CMD)) >>>> 106 .forEach(entries::add); >>>> 107 if (libs != null) >>>> 108 Files.walk(libs) >>>> 109 .filter(p -> !Files.isDirectory(p)) >>>> 110 .map(p -> toEntry(p, libs, >>>> EntryType.NATIVE_LIB)) >>>> 111 .forEach(entries::add); >>>> 112 if (configs != null) >>>> 113 Files.walk(configs) >>>> 114 .filter(p -> !Files.isDirectory(p)) >>>> 115 .map(p -> toEntry(p, configs, >>>> EntryType.CONFIG)) >>>> 116 .forEach(entries::add); >>>> 117 } catch (IOException ioe) { >>>> 118 throw new UncheckedIOException(ioe); >>>> 119 } >>>> 120 return entries.stream(); >>>> 121 } >>>> >>>> You can use collect(toList()) >>> ==> OK collect used. In addition, filter first then sort, tryWithResource >>> for 4 Files stream. >>> >>>> In general the contract for Archive.entries probably has to say the stream >>>> needs to be closed after use since it might cover lazy I/O based >>>> resources, so callers will need to use a try-with-resources block. >>> ==> Added a note in javadoc, implemented explicit close for non lazy >>> streams, added missing tryWithResource. Added a comment on what should be >>> done in ModuleArchive to keep laziness. >>>> Paul. >>> Thanks. >>> >>>>> http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot >>>>> <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot> >>>>> http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools >>>>> <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools> >>>>> >>>>> >>>>> Details: >>>>> >>>>> - jrt-fs provides access, via the nio FileSystem API, to the classes in a >>>>> .jimage file, organized by module or by package. >>>>> - Shared code for jimage support converted to native. Currently residing >>>>> in hotspot, but will migrate to it’s own jdk library >>>>> https://bugs.openjdk.java.net/browse/JDK-8087181 >>>>> <https://bugs.openjdk.java.net/browse/JDK-8087181> >>>>> - A new archive abstraction for class/resource sources. >>>>> - java based implementation layer for jimage reading to allow backport to >>>>> JDK8 (jrt-fs.jar - IDE support.) >>>>> - JNI support for jimage into hotspot. >>>>> - White box tests written to exercise native jimage support. > > > -- > Best regards, Sergey. >