0

在我的应用程序中,我使用的是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 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来源)[jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary.register(未知来源)[jnetpcap-1.4.r1425.jar:1.4.r1425] at com.slytechs.library.JNILibrary .register(Unknown Source) [jnetpcap-1.4.r1425.jar:1.4.r1425] 在 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]

4

1 回答 1

1

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

使用 JBoss EAP (Wildfly) 解决这个问题的方法是创建一个加载本地代码的模块。应用程序的其余部分(在 war 或 ear 文件中)记录了对模块的依赖,并且它只会被加载一次。

于 2016-09-29T22:41:54.900 回答