问题陈述
我尝试安装OpenCV作为JBoss的作为实例的全局模块。 该版本是:
- JBoss的为:7.1.1决赛
- OpenCV的:2.4.5(编译Java支持)
我从一个全新安装的Ubuntu服务器只安装JBoss的作为和OpenCV 12.04 64位开始。
前言
OpenCV的Java包装使用JNI调用。 因此,两两件事是必需的:
- OpenCV的-245.jar
- libopencv_java245.so
而提供/usr/share/OpenCV/java/
(关于安装)
我还点了一些意见:
- JBoss的安装是否正确(应用程序可以部署并正在努力)
- OpenCV的与Java支持的编译和安装,正确的是(Java中使用类OpenCV的上班)
- 使用OpenCV的和部署,与Maven一个基本的Web应用程序,在JBoss,作为工程(在
opencv-245.jar
被列为依赖pom.xml
,因此打包成war
)
问题描述
当我定义的OpenCV对JBoss全局模块(设置<scope>provided</scope>
在pom.xml中)这引发异常:
java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J
org.opencv.core.Mat.n_Mat(Native Method)
org.opencv.core.Mat.<init>(Mat.java:441)
WS.printMessage(WS.java:15)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155)
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257)
org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)
org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211)
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525)
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502)
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119)
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
看来,OpenCV的jar
库被发现,因为异常是从它提出。 此外,它不会抱怨没有找到像(摘自第一个链接在结束)的一些库:
java.lang.UnsatisfiedLinkError: no xxxx in java.library.path
因此,我猜libopencv_java245.so
是没有问题的。 的精确的配置进行说明。
配置
我所定义的org.opencv
在模块modules/org/opencv/main/module.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.opencv">
<resources>
<resource-root path="opencv-245.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
然后,我把在同一文件夹中opencv-245.jar
也libopencv_java245.so
在lib/linux-x86_64/
子文件夹(说明本地库 )
要定义这个模块中修改全局I standalone/configuration/standalone.xml
:
<subsystem xmlns="urn:jboss:domain:ee:1.0">
<global-modules>
<module name="org.opencv" slot="main"/>
</global-modules>
</subsystem>
最后使用全局模块我设置src/main/webapp/WEB-INF/jboss-deployment-structure.xml
:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.opencv" />
</dependencies>
</deployment>
</jboss-deployment-structure>
我还提醒我已经把<scope>provided</scope>
在我的Maven pom.xml
。
另外,把:
System.loadLibrary("opencv_java245");
或者没有在代码中不会改变任何东西。
额外的意见
我还注意到,与ear
的应用,一个组成war
,一个jar
,甚至点3在“序言”中描述的过程不工作,并给予同样的异常如上。 也许这些信息可以帮助。
有人有一些指针或解决方案?
相关问题
- 路径JBOSS 7.1.1设置DLL的
- 的JBoss 7正试图从JBoss的仓加载模块的库