Errors due to inaccessible modules (reflections?) (original) (raw)
ArcadeDB Version:
24.10.1 & 24.11.1
OS and JDK Version:
OpenJDK 17 (Ubuntu and MacOS)
Expected behavior
No error
Actual behavior
Couldn't disable close on interrupt
java.lang.reflect.InaccessibleObjectException: Unable to make field private sun.nio.ch.Interruptible java.nio.channels.spi.AbstractInterruptibleChannel.interruptor accessible: module java.base does not "opens java.nio.channels.spi" to unnamed module @1c72da34
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
at com.arcadedb.engine.PaginatedComponentFile.doNotCloseOnInterrupt(PaginatedComponentFile.java:216)
at com.arcadedb.engine.PaginatedComponentFile.open(PaginatedComponentFile.java:208)
at com.arcadedb.engine.ComponentFile.<init>(ComponentFile.java:50)
at com.arcadedb.engine.PaginatedComponentFile.<init>(PaginatedComponentFile.java:49)
at com.arcadedb.engine.FileManager.getOrCreateFile(FileManager.java:188)
at com.arcadedb.engine.PaginatedComponent.<init>(PaginatedComponent.java:57)
at com.arcadedb.engine.PaginatedComponent.<init>(PaginatedComponent.java:47)
at com.arcadedb.engine.PaginatedComponent.<init>(PaginatedComponent.java:42)
at com.arcadedb.engine.Dictionary.<init>(Dictionary.java:61)
at com.arcadedb.schema.LocalSchema.create(LocalSchema.java:138)
at com.arcadedb.database.LocalDatabase.openInternal(LocalDatabase.java:1782)
at com.arcadedb.database.LocalDatabase.create(LocalDatabase.java:207)
at com.arcadedb.database.DatabaseFactory.create(DatabaseFactory.java:90)
at com.arcadedb.console.Console.executeCreateDatabase(Console.java:444)
at com.arcadedb.console.Console.execute(Console.java:257)
at com.arcadedb.console.Console.parse(Console.java:742)
at com.arcadedb.console.Console.interactiveMode(Console.java:131)
at com.arcadedb.console.Console.execute(Console.java:185)
at com.arcadedb.console.Console.main(Console.java:148)
Steps to reproduce
Using the console:
or just start the server.
Fix
Add --add-opens java.base/java.nio.channels.spi=ALL-UNNAMED to the JAVA_OPTS environment variable to prevent this behavior. Maybe this option should be added to the console.sh and server.sh scripts.
Notably, this very option is already in the root pom.xml.