java.library.path中的java.lang.UnsatisfiedLinkError否*****dll

简介: java.library.path中的java.lang.UnsatisfiedLinkError否*****dll

如何解决java.library.path中的java.lang.UnsatisfiedLinkError否*dll?
为了System.loadLibrary()正常工作,该库(在Windows上为DLL)必须位于目录中PATH 或java.library.path系统属性中列出的路径上的某个目录中(这样你就可以启动Java了java -Djava.library.path=/path/to/dir)。

此外,对于loadLibrary(),你可以指定库的基本名称,但.dll结尾不能带。因此,/path/to/something.dll你只需使用System.loadLibrary("something")。

你还需要查看所获得的确切信息UnsatisfiedLinkError。如果显示类似以下内容:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no foo in java.library.path
那么它将无法在你的或中找到foo库(foo.dll)。如果显示类似以下内容:PATHjava.library.path

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V
则库本身有问题,因为Java无法将应用程序中的本机Java函数映射到其实际本机副本。

首先,我会在你的System.loadLibrary()呼叫周围记录一些日志,以查看该呼叫是否正常执行。如果它引发异常或不在实际执行的代码路径中,那么你将始终得到UnsatisfiedLinkError上面解释的后一种类型。

loadLibrary()附带说明一下,大多数人使用本机方法将调用放入类中的静态初始化程序块中,以确保始终始终执行一次:

class Foo {

static {
    System.loadLibrary('foo');
}
public Foo() {
}

}
解决方法
如何在我的Web应用程序中加载自定义dll文件?我尝试了以下方法,但失败了。

复制了system32文件夹中所有必需的dll,并尝试在Servlet构造函数中加载其中一个System.loadLibrary
在tomcat_home/shared/lib和中复制了所需的dlltomcat_home/common/lib
所有这些dll都在WEB-INF/libWeb应用程序中

声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。

相关文章
|
Java 测试技术 C#
【开发者笔记】java 利用jna调用c#的dll
          一、需求阐述:   如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需求。
17378 0
|
2月前
|
Java Linux Windows
【Java】已解决Java中的java.lang.UnsatisfiedLinkError异常
【Java】已解决Java中的java.lang.UnsatisfiedLinkError异常
133 0
|
3月前
|
Java API Android开发
Java通过JNI调用C++的DLL库
Java通过JNI调用C++的DLL库
23 0
|
4月前
|
Java 开发工具 计算机视觉
Caused by: java.lang.UnsatisfiedLinkError: Can‘t load AMD 64-bit .dll on a IA 32-bit platform【已解决】
Caused by: java.lang.UnsatisfiedLinkError: Can‘t load AMD 64-bit .dll on a IA 32-bit platform【已解决】
33 0
|
Java Linux 计算机视觉
全网首发:Linux自带opencv库的JAVA调用失败/java.lang.UnsatisfiedLinkError:libopencv_ml.so.405: 无法打开共享对象文件
全网首发:Linux自带opencv库的JAVA调用失败/java.lang.UnsatisfiedLinkError:libopencv_ml.so.405: 无法打开共享对象文件
590 0
|
Java 计算机视觉
java调用opencv库出错:java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J
java调用opencv库出错:java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J
678 0
|
Java C++ 计算机视觉
java调用C++ DLL库方法
最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是网页端要求使用Java后台,这就涉及到Java调用DLL的问题。经过查找,实现了一个简单的例子。 1、第一步,先在Java中新建一个类     如上图,其中注意这句System.loadLibrary("javaCallcpp");,这就是加载dll文件的代码了。
2062 0