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.