現在、jdk から jrt-fs.jar (libs フォルダー内) から java.lang.Record などのプレビュー クラス ファイルを抽出しようとしていますが、反復処理時に Record などのプレビュー クラスが見つかりません。これは私が使用しているコードです:
Path jrtFsJar = jdk15Home.resolve("lib").resolve("jrt-fs.jar");
jrtFsJarLoader = new URLClassLoader(new URL[] {jrtFsJar.toUri().toURL()});
FileSystem jrtFs = FileSystems.newFileSystem(
URI.create("jrt:/"),
Collections.emptyMap(),
jrtFsJarLoader);
Files.walk(jrtFs.getPath("/modules")).forEach(path ->
// Here is walks over classes such as "modules/java.base/java/lang/Object.class"
// but not over "modules/java.base/java/lang/Record.class"
)
私はまた、より直接的なアプローチを試みました:
FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
// Object works, I get the bytes.
byte[] object = Files.readAllBytes(jrtFs.getPath("modules", "java.base",
"java/lang/Object.class"));
// Record fails, NoSuchFile.
byte[] object = Files.readAllBytes(jrtFs.getPath("modules", "java.base",
"java/lang/Record.class"));
--enable-preview を使用してまったく同じ jdk を実行すると、レコードを使用できるようになりました。
jdk linux/lib から Record クラスを抽出するにはどうすればよいですか? プレビュー クラスはその中にありますか、それとも他の場所で探す必要がありますか? それらにアクセスするには特定のフラグが必要ですか?
どんな助けでも大歓迎です。