我正在编写一个类的测试用例,该类调用另一个具有加载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)
答案 0 :(得分:1)
从该文件路径看起来,您在Windows上,这意味着loadLibrary
将不会查找名为libPixelProxy_jni.so
的文件,它将查找名为PixelProxy_jni.dll
的文件。 (您可以使用System.mapLibraryName
确切了解它的内容。)
您可以找到库的.dll
,自己编译,或尝试System.load
,这样可以从绝对路径加载本机库:
System.load("C:\Users\Desktop\libPixelProxy_jni.so");
但是只有在实际为windows编译库时才会有效。