我试图在Centos 8上使用maven和opencv构建我的Java项目,通过尝试某种修复方法,我可以将其构建为运行API的.jar文件。但是,当我的服务从opencv调用lib时,它会引发以下错误:java.lang.UnsatisfiedLinkError: 'long org.opencv.core.Mat.n_Mat()'。
我在centos 8:https://my.oschina.net/u/3568600/blog/4553084中安装opencv的参考
这是我的一步:
wget https://github.com/opencv/opencv/archive/4.4.0.zip并解压缩itcd opencvmkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..
makesudo make install
运行此步骤后输出:

移动库:cp -r /usr/local/share/java/opencv4/libopencv_java440.so /usr/lib
ldconfig -v | grep opencv这里我的输出:
在这里,我的java代码加载核心本机库:
public static void main(String[] args) {
System.load("/user/lib/libopencv_java440.so");
SpringApplication.run(MyApp.class, args);
}我的进程抛出错误:
public static Mat BufferedImage2Mat(BufferedImage image) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", byteArrayOutputStream);
byteArrayOutputStream.flush();
return Imgcodecs.imdecode(new MatOfByte(byteArrayOutputStream.toByteArray()), Imgcodecs.IMREAD_UNCHANGED); // Throw in this line
}你建议我下一步做什么?
注意:在中运行正常的本地()代码,将libopencv_java440.so更改为opencv_java440.dll,并在eclipse中将opencv-440.jar添加到类路径。
发布于 2020-10-06 03:44:01
我找到了解决这个问题的简单方法。
在pom.xml中添加依赖项:
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv-440</artifactId>
<version>4.4.0</version>
</dependency>通过命令将opencv-440.jar注册到maven:
mvn install:install-file -Dfile=/path/opencv-440.jar -DgroupId=org.opencv -DartifactId=opencv-440 -Dversion=4.4.0 -Dpackaging=jar
https://stackoverflow.com/questions/64158708
复制相似问题