OpenJdk 21 не поддерживает Chronicle-Queue
Я попытался запустить Chronicle-Queue под openJdk21, следуя методу, указанному в адресе ссылки https://github.com/OpenHFT/OpenHFT/blob/ea/docs/Java-Version-Support.adoc, и возникла следующая ошибка:
Exception in thread "main" java.lang.ExceptionInInitializerError
at net.openhft.chronicle.queue.impl.single.SingleChronicleQueueBuilder.<clinit>(SingleChronicleQueueBuilder.java:70)
at net.openhft.chronicle.queue.ChronicleQueue.singleBuilder(ChronicleQueue.java:106)
at com.example.virtualthreads.QueueTest.main(QueueTest.java:21)
Caused by: java.lang.IllegalStateException: Not found: sun.nio.ch.UnixFileDispatcherImpl
at net.openhft.chronicle.core.OS.findClass(OS.java:131)
at net.openhft.chronicle.core.OS.<clinit>(OS.java:100)
... 3 more
Caused by: java.lang.ClassNotFoundException: sun.nio.ch.UnixFileDispatcherImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at net.openhft.chronicle.core.OS.findClass(OS.java:128)
... 4 more
Я передал следующие параметры:
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
Я написал тестовый код:
String basePath = "opt/queue";
try (ChronicleQueue queue = ChronicleQueue.singleBuilder(basePath).build()) {
ExcerptAppender appender = queue.acquireAppender();
appender.writeText("Hello World!");
ExcerptTailer tailer = queue.createTailer();
assertEquals("Hello World!", tailer.readText());
}