Reading bootstrap class bytecode from Java 7
Alan Bateman
Alan.Bateman at oracle.com
Tue Dec 6 12:39:09 UTC 2016
On 06/12/2016 02:07, Ess Kay wrote:
> Are there any code snippets anywhere that demonstrate using Java 9's
> jrt-fs.jar from within Java 8 to access Java 9 java.lang.Object?
> Cannot find any using Google. Struggling to make this work.
>
Here's a code fragment that reads the bytes for java/lang/Object.class,
just point it at the target image and it will create a URLClassLoader
that loads from the target image's jrt-fs.jar:
String targetImage = ...
URL url = Paths.get(targetImage, "lib", "jrt-fs.jar").toUri().toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { url });
FileSystem fs = FileSystems.newFileSystem(URI.create("jrt:/"),
Collections.emptyMap(), loader);
Path file = fs.getPath("/modules/java.base/java/lang/Object.class");
byte[] bytes = Files.readAllBytes(file);
Existing tools might find it easier to look at the /packages tree, the
file system has sym links to support this type of navigation when needed.
-Alan
More information about the jigsaw-dev
mailing list