在我的应用程序中,我正在使用Jnetpcap本机库。使用static本身中的jar块加载本机库。

启动后将应用程序重新加载到JBOSS时,它可以正常工作。

一旦进行任何重新部署而没有重新启动JBOSS,该应用程序将无法注册该库并抛出UnsatisfiedLinkError

同样,如果我重新启动JBOSS,它可以正常工作。

JBoss版本:JBoss EAP 6.2.0.GA

在Windows中,库位于类路径中;在Linux中,库位于\ usr \ lib中。

堆栈跟踪:


01:41:48,829错误[org.springframework.batch.core.step.AbstractStep]
(pool-6-thread-1)执行步骤时遇到错误:
java.lang.UnsatisfiedLinkError:
com.slytechs.library.NativeLibrary.dlopen(Ljava / lang / String;)J在
com.slytechs.library.NativeLibrary.dlopen(本机方法)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.NativeLibrary。(来源不明)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.JNILibrary。(来源不明)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.JNILibrary.loadLibrary(来源不明)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.JNILibrary.register(未知来源)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.JNILibrary.register(未知来源)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
com.slytechs.library.JNILibrary.register(未知来源)
[jnetpcap-1.4.r1425.jar:1.4.r1425]在
org.jnetpcap.Pcap(来源不明)
[jnetpcap-1.4.r1425.jar:1.4.r1425]

最佳答案

您遇到的问题是,本机库先前是由现已失效的部署先前加载的,无法再次加载。

使用JBoss EAP(Wildfly)解决此问题的方法是创建一个加载本机代码的模块。您的应用程序的其余部分(在war或ear文件中)记录了对该模块的依赖关系,并且将仅加载一次。

09-25 22:20