OpenCV作为JBoss作为全局模块

 2023-01-20    311  

问题描述

问题表现

我尝试将OPENCV安装为JBOSS-As实例的全局模块.版本是:

  • jboss-as:7.1.1最终
  • opencv:2.4.5(汇编的Java支持)

我从Ubuntu Server的新安装12.04 64位,仅安装JBOSS-AS和OPENCV.

OpenCV作为JBoss作为全局模块

序言

OpenCV Java包装器使用JNI调用.因此,需要两件事:

  • opencv-245.jar
  • libopencv_java245.so

,在/usr/share/OpenCV/java/中可用(有关安装)

我还指出了一些观察:

  1. JBOSS的安装是正确的(可以部署应用程序并正在工作)
  2. 使用Java支持的OPENCV的编译和安装是正确的(使用OpenCV的Java类正在工作)
  3. 使用openCV的基本Web应用程序,并在JBOSS-AS WORKS上部署并部署了(opencv-245.jar在pom.xml中列为依赖项,从而将其打包到war中)
  4. )

问题描述

我将OPENCV定义为JBOSS Global Module(pom.xml中的设置<scope>provided</scope>),此异常就会提高:

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不是问题.精确配置如下所述.

配置

我在modules/org/opencv/main/module.xml中定义了org.opencv模块:

<?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/ subfolder(如本地库)

将此模块定义为standalone/configuration/standalone.xml中的全局I修改:

<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组成,即使是” preamble”中点3中描述的过程也不起作用,并且给出了与上述相同的例外.也许这些信息可以帮助您.

有人有一些指针或解决方案?

原文链接:https://77isp.com/post/26046.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。