2017-01-06 3 views
0

По сути, вопрос в этом. У меня есть Java-программа, с которой я загружаю библиотеку JNI. Может ли библиотека JNI быть связана с общей библиотекой HotSpot libjvm.so и, соответственно, функциями вызова, уникальными для HotSpot, то есть вне jni.h?Ссылка на код JNI с JVM

Когда я пытаюсь сделать это прямым путем, в результате программа сбой с:

java: symbol lookup error: /path/to/libtest.so: undefined symbol: _ZNK7oopDesc5klassEv

Это дает появление не в состоянии загрузить, потому что он не может разрешить HotSpot уникальный oopDesc. Любые предложения по созданию библиотеки, которые могут быть связаны таким образом?

Редактировать: Пробовал также ссылаться на libjava.so во время компиляции без успеха.

ответ

0

Если libjvm.so, который вы хотите загрузить, отличается от libjvm.so, который неявно связан с java EXE, это не сработает, потому что они конфликтуют, если вы не сделаете что-то вроде этого trick или что trick. Является ли java EXE загружать тот же libjvm.so, что ваша библиотека хочет ссылаться? Вы должны быть в состоянии сказать, какой .so загружен java EXE, как описано here.

Если java EXE и ваша библиотека оба хотят того же .so, и он все еще не работает, я не знаю, что сказать.

+0

Спасибо, я проверил это, но это не проблема. Все еще происходит даже при привязке к тем же библиотекам. – 0x277F

+0

Это может быть связано? https://bugs.openjdk.java.net/browse/JDK-8037962 – Wheezil

Смежные вопросы