Как избавиться от аргумента IsolateThreadJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как избавиться от аргумента IsolateThread

Сообщение Anonymous »

Я пытаюсь передать указатель на функцию в структуре в библиотеку C (FUSE). Прототипы функций определяются библиотекой, поэтому у меня нет возможности их изменить.
Проблема в том, что graalvm требует наличия параметра IsolateThread. Я нашел github, который использует эту аннотацию, чтобы избавиться от нее:

Код: Выделить всё

@CEntryPoint
@CEntryPointOptions(prologue = CEntryPointSetup.EnterCreateIsolatePrologue.class,
epilogue = CEntryPointSetup.LeaveTearDownIsolateEpilogue.class)
private static void idle() {
Мне пришлось добавить эту зависимость, чтобы эта аннотация была доступна:

Код: Выделить всё

        
org.graalvm.nativeimage
svm
24.1.1

Но тогда я вообще не могу скомпилировать (я использую плагин Shade для maven, чтобы включить все мои зависимости):

Код: Выделить всё

Error: Processing jar:file:///net/172.18.192.1/c/Users/edaniel/IdeaProjects/java-hdfs-fuse/target/java-hdfs-fuse-1.0-SNAPSHOT.jar!/META-INF/native-image/org.graalvm.truffle.compiler/native-image.properties failed
Caused by: com.oracle.svm.driver.NativeImage$NativeImageError: Failed to process ForceOnModulePath attribute: Module descriptor for the module org.graalvm.truffle.compiler could not be resolved with class-path entry: /net/172.18.192.1/c/Users/edaniel/IdeaProjects/java-hdfs-fuse/target/java-hdfs-fuse-1.0-SNAPSHOT.jar.
Caused by: java.lang.module.FindException: Unable to derive module descriptor for /net/172.18.192.1/c/Users/edaniel/IdeaProjects/java-hdfs-fuse/target/java-hdfs-fuse-1.0-SNAPSHOT.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: jnamed.class found in top-level directory (unnamed package not allowed in module)

Открыв банку и удалив проблемные файлы, я получаю следующую ошибку:

Код: Выделить всё

Fatal error: java.lang.IllegalAccessError: superclass access check failed: class jdk.graal.compiler.hotspot.HotSpotGraalJVMCIServiceLocator (in unnamed module @0x2dc54ad4) cannot access class jdk.vm.ci.services.JVMCIServiceLocator (in module jdk.internal.vm.ci) because module jdk.internal.vm.ci does not export jdk.vm.ci.services to unnamed module @0x2dc54ad4
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.defineClass(NativeImageClassLoader.java:490)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.findClassViaClassPath(NativeImageClassLoader.java:442)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:629)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)

И вот мне интересно, где я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/791 ... d-argument
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»