2015-11-03 2 views
0

В моем приложении я использую родные библиотеки Jnetpcap. Нативные библиотеки загружаются с использованием блока static в самом jar.Использование родной библиотеки весной с JBOSS

Когда я загружаю приложение только в JBOSS после запуска, он отлично работает.

Как только я переустанавливаю без перезагрузки JBOSS, приложение не может зарегистрировать библиотеку и выбрасывает UnsatisfiedLinkError.

Опять же, если я перезапущу JBOSS, он отлично работает.

JBoss Версия: JBoss EAP 6.2.0.GA

Библиотеки находятся на пути к классам в Windows, и \ USR \ Lib в Linux.

Стек след:

01:41:48,829 ERROR [org.springframework.batch.core.step.AbstractStep] (pool-6-thread-1) Encountered an error executing the step: java.lang.UnsatisfiedLinkError: com.slytechs.library.NativeLibrary.dlopen(Ljava/lang/String;)J at com.slytechs.library.NativeLibrary.dlopen(Native Method) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.NativeLibrary.(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.loadLibrary(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.register(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.register(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.register(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] at org.jnetpcap.Pcap.(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425]

+1

Вы могли бы предоставить полный стек исключений. и расскажите, где расположены ваши родные библиотеки? что такое версия JBoss, которую вы используете? – Stanislav

+0

JBoss EAP 6.2.0.GA, В окнах, библиотеки расположены в пути к классам В Linux библиотеки расположены в \ USR \ Lib – Prabhu

ответ

1

Проблемы у Вас есть то, что родная библиотека была ранее загружена ныне несуществующим развертыванием и не может быть загружена во второй раз.

Способом решения этой проблемы с JBoss EAP (Wildfly) является создание модуля, который загружает собственный код. Остальная часть вашего приложения (в военном или ушном файле) документирует зависимость от модуля, и он будет загружен только один раз.

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