Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未满足链接器错误:找不到库文件 < >我正在编写一个测试类的测试用例,该类调用另一个类的构造函数,该类具有加载C++库、的静态块。 static { System.loadLibrary("PixelProxy_jni"); }_Java_Unit Testing_Junit_Mockito_Unsatisfiedlinkerror - Fatal编程技术网

Java 未满足链接器错误:找不到库文件 < >我正在编写一个测试类的测试用例,该类调用另一个类的构造函数,该类具有加载C++库、的静态块。 static { System.loadLibrary("PixelProxy_jni"); }

Java 未满足链接器错误:找不到库文件 < >我正在编写一个测试类的测试用例,该类调用另一个类的构造函数,该类具有加载C++库、的静态块。 static { System.loadLibrary("PixelProxy_jni"); },java,unit-testing,junit,mockito,unsatisfiedlinkerror,Java,Unit Testing,Junit,Mockito,Unsatisfiedlinkerror,我已将库路径指定为 -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.l

我已将库路径指定为

-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)
java.lang.UnsatisfiedLinkError:java.library.path中没有PixelProxy_jni
位于java.lang.ClassLoader.loadLibrary(未知源)
位于java.lang.Runtime.loadLibrary0(未知源)
位于java.lang.System.loadLibrary(未知源)
在com.XrayPixelProxyInputStream。(XrayPixelProxyInputStream.java:36)
位于com.RadImageReader.readImage(RadImageReader.java:57)
在servicedisplay.ServiceImageDisplayer.showImage(ServiceImageDisplayer.java:124)
在servicedisplay.test1.ServiceImageDisplayerTest.TestShowImageStringIntentIntent(ServiceImageDisplayerTest.java:95)

从该文件路径看,您好像在windows上,这意味着
loadLibrary
不会查找名为
libPixelProxy\u jni的文件。因此
,它会查找名为
PixelProxy\u jni.dll的文件。(通过使用,您可以确切地了解它将查找什么。)

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

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

但这只在库确实是为windows编译的情况下才起作用。

我认为eclipse在运行应用程序时会覆盖java库路径,您是否尝试打印它以确保它指向正确的位置?是的,我只是打印了它,它没有引用我指定的路径。那我怎么设置呢?是的,我在Windows7上。我做了
System.load(“C:\Users\Desktop\libpixelproxyjni.so”)java.lang.unsatifiedlinkerror:C:\Users\Desktop\libPixelProxy\u jni.so:无法在IA 32位平台上加载此.dll(机器代码=0x101)
@hushie看起来像是一个64位dll,您还必须使用64位版本的java。在我的测试类中,我正在访问调用另一个包含静态块的类的构造函数的方法。因此,当我运行该测试方法时,我得到了上面的异常。除了更改java版本,还有其他解决方法吗?@hushie您正在测试的类间接依赖于该库,即使有方法不加载库(我不知道),该类也可能无法正常工作。由于您使用mockito标记,我建议对加载库的类使用依赖项注入(如果您可以更改正在测试的类),然后模拟该依赖项。不幸的是,我无法更改正在测试的类。