不满意的链接器错误:找不到库文件

时间:2017-04-17 10:35:29

标签: java unit-testing junit mockito unsatisfiedlinkerror

我正在编写一个类的测试用例,该类调用另一个具有加载c ++库的静态​​块的类的构造函数,

static
  {
          System.loadLibrary("PixelProxy_jni");
  }

我已将库路径指定为

-Djava.libarary.path=C:\Users\Desktop\libPixelProxy_jni.so

在eclipse中的vm参数中,但它仍然没有用。

请帮我找到解决方案

堆栈跟踪

java.lang.UnsatisfiedLinkError: no PixelProxy_jni in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.XrayPixelProxyInputStream.<clinit>(XrayPixelProxyInputStream.java:36)
    at com.RadImageReader.readImage(RadImageReader.java:57)
    at servicedisplay.ServiceImageDisplayer.showImage(ServiceImageDisplayer.java:124)
    at servicedisplay.test1.ServiceImageDisplayerTest.testShowImageStringIntIntIntIntIntInt(ServiceImageDisplayerTest.java:95)

1 个答案:

答案 0 :(得分:1)

从该文件路径看起来,您在Windows上,这意味着loadLibrary将不会查找名为libPixelProxy_jni.so的文件,它将查找名为PixelProxy_jni.dll的文件。 (您可以使用System.mapLibraryName确切了解它的内容。)

您可以找到库的.dll,自己编译,或尝试System.load,这样可以从绝对路径加载本机库:

System.load("C:\Users\Desktop\libPixelProxy_jni.so");

但是只有在实际为windows编译库时才会有效。