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

sikuli类路径未满足LinkError与macosx intellij Junit无opencv_core

郏瀚
2023-03-14

我已经做了以前的搜索试图找到一个答案,但我的尝试失败至今。我认为错误很简单,只是没有加载类。

我正在用Intellij运行MacOSX10。我将它与Junit、Spring和Maven&Junit一起使用。

我按照maven Dependencients找到了mvnrepository.com-sikuli-api1.2.0,所以我在想,如果将依赖项添加到pom,那么所有文件都应该在我的类路径中?所以我不明白为什么它不起作用?

    <dependency>
        <groupId>org.sikuli</groupId>
        <artifactId>sikuli-api</artifactId>
        <version>1.2.0</version>
    </dependency>

    <dependency>
        <groupId>org.sikuli</groupId>
        <artifactId>sikuli-core</artifactId>
        <version>1.2.2</version>
    </dependency>

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>14.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacpp</artifactId>
        <version>0.9</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>opencv</artifactId>
        <version>2.4.9-0.9</version>
        <classifier>macosx-x86_64</classifier>
    </dependency>
    <dependency>
        <groupId>org.piccolo2d</groupId>
        <artifactId>piccolo2d-core</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.piccolo2d</groupId>
        <artifactId>piccolo2d-extras</artifactId>
        <version>1.3.1</version>
    </dependency>

我的测试

static {
    System.setProperty("platform.dependency", "macosx-x86_64");
    //System.setProperty("platform.dependency", "1");  // tried this also
}

@Test
public void testOne() throws Exception {

    File file = new File(getClass().getClassLoader().getResource("camera_icon.png").getFile());

    browse(new URL("http://code.google.com"));

    ScreenRegion s = new DesktopScreenRegion();
    Target target = new ColorImageTarget(file);

    // ** Fails here  **
    ScreenRegion r = s.find(target); 
    ....

错误类加载器

我跟踪了调试器,但它在open_core的类加载器上失败了--参见屏幕截图

Caused by: java.lang.UnsatisfiedLinkError: /private/var/folders/qp/.../libjniopencv_core.dylib: dlopen(/private/var/....../libjniopencv_core.dylib, 1): Library not loaded: @rpath/libopencv_core.2.4.dylib
  Referenced from: /private/var/.......libjniopencv_core.dylib
  Reason: no suitable image found.  Did find:
    /private/va.....77/./libopencv_core.2.4.dylib: malformed mach-o image: load command #12 length (0) too small in /private/var/fo......./libopencv_core.2.4.dylib  t java.lang.ClassLoader$NativeLibrary.load(Native Method)

共有1个答案

凌长恨
2023-03-14

答案基本上在readme.md文件中,但我将在这里拼写出来。您需要将platform.dependencysystem属性设置为所需的平台,例如macosx-x86_64,或者将trueplatform.dependencies设置为true,以获取所有平台的依赖项。我不确定我们应该如何用JUnit Spring来设置它(应该在文档中),但即使这样也不能用SBT来设置,所以为了处理这些情况,我们可以手动添加特定于平台的依赖项。由于您正在Mac OS X上运行,并且对使用OpenCV 2.4.9感兴趣,因此将此附加依赖项添加到pom.xml文件中应该可以:

<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>opencv</artifactId>
    <version>2.4.9-0.9</version>
    <classifier>macosx-x86_64</classifier>
</dependency>
 类似资料:
  • 我已经构建了一个基于Flutter的应用程序,它在我的设备上运行良好。 然而,在客户端设备上,它在启动时崩溃(甚至在Centry启动之前)。 当连接到ADB时,我们得到了这个日志: 我专门使用arm64构建(如果我尝试在arm(32)上运行,即使在我的设备上应用程序也会崩溃。

  • 我在做一个增强现实应用程序。这里有Java Eclipse SDK。因此,我没有更改Eclipse SDK和Java中的任何内容。我没有为SDK设置任何路径,我只是下载并安装了cygwin,然后我为它设置了路径。我再次安装了vuforia.exe文件,并将Eclipse首选项中的path设置为vuforia,然后再次下载NDK。我只是扩展那些ndk和复制在sdk根文件夹,我设置路径到ndk。现在我

  • 为什么我会得到不满意的链接错误? 细节如下: 本机方法的原型及其在我的Java代码中的调用是这样的: 私有本机long sampleFunction(long[][]twoDimArray,long number); p.SampleFunction(twoDimArray,number); 本机方法在VC++代码中的原型是这样的: JNIEXPORT jlong JNICALL Java_MyC

  • 我正在创建一个AWS CodePipeline资源与terraform: 运行时,在它返回 编辑: 新的部署阶段是: 我有这个应用程序创建使用: 组使用:

  • Spring云模拟错误: 书房lient.java ontroller.java 假装客户。Java语言 application.yml pom.xml 版本:Dalston. SR4 我该怎么解决这个问题?