Reputation: 11
I tried to run Chronicle-Queue under openJdk21 following the method in the link address https://github.com/OpenHFT/OpenHFT/blob/ea/docs/Java-Version-Support.adoc, and the following error was thrown:
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
I passed in the following parameters:
--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
I have written test code:
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());
}
Upvotes: 1
Views: 713
Reputation: 533492
The 5.24.x version wasn't support for Java 21. However, 5.25eaX is supported for Java 21.
There are no command line argument changes between Java 17 and Java 21. If it works in Java 17, those arguments will work in 21. However, some very low-level details are different in the Java 21 JVM, which required some code changes.
Upvotes: 0