为什么从JRuby调用时System.load失败?

问题描述

我似乎无法通过JRuby将System.load用于dll。通话似乎成功,但似乎也无济于事。我正在尝试使用OpenCV,但我不认为这有问题。他们提供了一个OpenCV dll和一个jar文件,其中包含一些类,这些类可以调度对其的调用

我可以从Java使用它,但不能从JRuby使用它。这是有效的Java代码(来自OpenCV示例代码):

import org.opencv.objdetect.CascadeClassifier;
import java.io.File;

public class T {
  public static void main(String[] args) {
      String name = new File("opencv_java440.dll").getAbsolutePath();
      System.load(name);
      CascadeClassifier faceDetector = 
          new CascadeClassifier("lbpcascade_frontalface.xml");
  }
}

在这里,我认为通过JRuby应该完全一样。这不起作用:

import org.opencv.objdetect.CascadeClassifier

name = java.io.File.new('opencv_java440.dll').getAbsolutePath
java.lang.System.load name
faceDetector = CascadeClassifier.new 'lbpcascade_frontalface.xml'

运行时,这告诉我:

未处理的Java异常:java.lang.UnsatisfiedLinkError:org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Ljava / lang / String;)J java.lang.UnsatisfiedLinkError:org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Ljava / lang / String;)J org / opencv / objdetect / CascadeClassifier.java:-2

上的CascadeClassifier_0

如果我注释掉对System.load的调用,我将从Java代码中获得相同的异常(上面)。

我很迷惑。我做错了什么?

干杯, -鲍勃

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)