2015-11-03 31 views
0

在我的应用程序中,我使用的是Jnetpcap本地库。本地库使用jar本身的static块加载。在JBOSS中使用Spring本地库

当我在启动后将新应用程序刚加载到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, 在Windows中, 库位于类路径 在Linux中, 库位于的\ usr \ lib中 – Prabhu

回答

1

您遇到的问题是,本地库之前由现已解散的部署和装载无法加载第二次。

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