当前位置: 首页 > 知识库问答 >
问题:

在Apple M1的Eclipse中使用OpenCV/Java不兼容的架构问题

公冶才
2023-03-14

我有一台带有新M1芯片的MacBookPro。我的计划是使用它作为opencv和Java的开发平台。DevEnv是Eclipse。

为了安装opencv,我遵循以下说明:

    < li>brew安装ant < li>brew edit opencv I更改行:-DBUILD _ opencv _ java = OFF in-DBUILD _ opencv _ Java = ON以获得Java支持

然后

(我以前为其他项目安装过Xcode,也安装过命令行工具。)

编译成功!

然后我设置了一个简单的项目,在构建路径中添加了一个指向编译后的jar的外部库。我还将路径添加到相应的dylib中。

日食找到库!

这是程序的java代码:

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class OpenCVTest {

    public static void main(String[] args) {
        System.out.println("hello world");
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("mat = " + mat.dump());
    }

}

编辑器中没有标记编译错误。

但是当我启动程序时,它报错(控制台):

线程“main”中出现hello world异常Java . lang . unsatisfiedlinkerror:/opt/home brew/Cellar/opencv/4 . 5 . 4 _ 4/share/Java/opencv 4/libopencv _ Java 454 . dylib:dl open(/opt/home brew/Cellar/opencv/4 . 5 . 4 _ 4/share/Java/opencv 4/libopencv _ Java 454 . dylib 0x 0001):tryed:“/opt/home brew/Cellar/opencv/opencv/4 . 5 . 4

我使用文件命令签入控制台,它确认它是arm64,我认为这是正确的体系结构。

我检查了我的日食,那是X86。所以我安装了另一个日食(aarch64),具有正确的原型

同样的错误!

那么问题是什么?

感谢您的帮助。

共有1个答案

海典
2023-03-14

我真傻!我使用了aarch64 eclipse、AARCH64OpenCV,但它是一个基于X86_64的Java。这就是为什么它需要X86动态库。

我用aarch64安装了一个corretto18,现在一切都对我有利。

 类似资料:
  • 问题内容: 我刚刚安装了Eclipse Oxygen并创建了一个JFrame项目。从源视图切换到设计视图时,出现“不兼容的Java版本错误”。 完全错误Desc:Eclipse在0以下运行,但是此Java项目的Java兼容级别为10,因此WindowBuilder将无法从该项目中加载类。对项目使用较低级别的Java,或使用较新的Java版本运行Eclipse。 我在Windows中检查了版本->首

  • 问题内容: 由于升级到Java 1.8,在GGTS(日食)中运行grails应用程序时遇到了一些问题。 堆栈开始于: 我曾经在Java 1.7中运行相同的应用程序。我的同事升级到1.8,并且不再能够运行它。 我已经使用SUN JDK进行了测试,现在又使用了OpenJDK,这对当前的JDK openjdk版本“ 1.8.0_40”* 没有帮助。 * JAVA_HOME,JAVA_PATH和任何其他变

  • 由于升级到Java 1.8,在GGTS(eclipse)中运行grails应用程序时遇到一些问题。 堆栈从以下内容开始: 我曾经在1.7Java运行同样的应用,同事升级到1.8,再也无法运行了。 我用SUN JDK进行了测试,现在又用OpenJDK了,这对当前的JDK OpenJDK版本“1.8.0_40”没有帮助 JAVA_HOME,JAVA_PATH和任何其他变量似乎指向正确的JDK安装我已经

  • 我正在使用Spark Version2.3使用编写和保存数据。 表在配置单元中创建,但没有使用正确的模式。我无法从配置单元表中选择任何数据。 如何将数据记录保存并写入可稍后查看的配置单元表?

  • 在过去的2个小时里,我们一直在与这个错误作斗争,尝试使用Java11作为默认,但这个错误似乎没有得到修复。它给出了以下错误: 线程“main”Java.lang.unsupportedClassVersionError:org/opencv/core/core已由最新版本的Java运行时(类文件版本55.0)编译,此版本的Java运行时只识别类文件版本高达52.0

  • 我很困惑,如果模式注册中心不能演化模式升级/更改,那么我为什么要使用模式注册中心,或者说我为什么要使用AVRO?