java.lang.UnsatisfiedLinkError: Unable to load library 'ClientSDK'报错,修改jdk什么的都试了

我是代码搬运工 2018-02-25 11:40:59
root cause

java.lang.UnsatisfiedLinkError: Unable to load library 'ClientSDK': ÕҲ»µ½ָ
com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:155)
com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:216)
com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:191)
com.sun.jna.Library$Handler.<init>(Library.java:131)
com.sun.jna.Native.loadLibrary(Native.java:279)
com.sun.jna.Native.loadLibrary(Native.java:265)
com.struts2.util.JNADll.<clinit>(JNADll.java:7)
com.struts2.service.impl.SysInfoBizImpl.getChInfosList(SysInfoBizImpl.java:426)
com.struts2.action.SysInfoAction.getSysInfo(SysInfoAction.java:126)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
com.struts2.filter.LoginFilter.doFilter(LoginFilter.java:33)
com.struts2.filter.ForceNoCacheFilter.doFilter(ForceNoCacheFilter.java:19)
com.struts2.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:28)
package com.struts2.util;

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface JNADll extends Library{
JNADll instance = (JNADll) Native.loadLibrary("ClientSDK", JNADll.class);
public int MDE_Join(int port,String ip);
public boolean MDE_GainAllChlStatus(int index);
}
...全文
3109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈希深蹲 2018-08-10
  • 打赏
  • 举报
回复
引用 7 楼 trocp 的回复:
java.lang.UnsatisfiedLinkError: Unable to load library 'ClientSDK'

说明:ClientSDK.dll这个文件不存在或放置位置不对或这个dll不能被JNA调用。如果用的是别人的dll,应该先与别人沟通好,最好让他提供Demo。

如果是Linux,文件名应该是libClientSDK.so




我想问您一下一个类似的问题,我再Windows的eclipse里面使用test4J写了一个识别图片的代码,然后打包成jar包之后,导入了centos中进行部署,但是部署的时候报错如下;
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/
libtesseract.so) not found in resource path ([file:/usr/local/LOLO/tess4j/tesseract-0.0.1-SNAPSHOT-jar-with-dependencies.jar])
我想问一下我在Windows中加入什么代码,才可以使我的jar包中包含有centos部署项目需要用到的.so文件。
  • 打赏
  • 举报
回复
也就是说这个dll文件本身是有限制的,就是不能加载的?@oO临时工Oo
oO临时工Oo 2018-02-28
  • 打赏
  • 举报
回复
引用 8 楼 qq_39923830 的回复:
也就是说这个dll文件本身是有限制的,就是不能加载的?@oO临时工Oo
不是所有的dll都能被java访问,所以你得与提供dll的人沟通好,这个dll到底能不能被java调用。 另外,在实战中,不到万不得已,不要使用JNI或JNA,尤其是别人提供的dll,后续支撑是个很大的麻烦。
  • 打赏
  • 举报
回复
引用 3 楼 trocp 的回复:
[quote=引用 2 楼 trocp 的回复:] 可以参考一下
/**
 * JNI示例程序
 * @author Administrator
 *
 */
public class JNIUtil {

	static{
//		System.loadLibrary("RefJNI");//windows 文件路径 C:\Windows\System32\RefJNI.dll
		System.loadLibrary("JNIUtil");//linux 文件路径 /usr/lib/libJNIUtil.so
	}
	public native static String hello(String name);
	public native static int add(int data1, int data2);
	
	public static void main(String[] args) {
		String ret = hello("world");
		System.out.println(ret);

		System.out.println(add(1, 3));
	}
}
其中以下两个方法是本地dll或so中的方法: public native static String hello(String name); public native static int add(int data1, int data2);[/quote] 我用的是JNA,JNI太复杂了,还要自己再编译一个dll动态库
  • 打赏
  • 举报
回复
JNI是要自己在写一个dll动态库的,我用的是JNA
oO临时工Oo 2018-02-27
  • 打赏
  • 举报
回复
java.lang.UnsatisfiedLinkError: Unable to load library 'ClientSDK' 说明:ClientSDK.dll这个文件不存在或放置位置不对或这个dll不能被JNA调用。如果用的是别人的dll,应该先与别人沟通好,最好让他提供Demo。 如果是Linux,文件名应该是libClientSDK.so
  • 打赏
  • 举报
回复
@oO临时工Oo
oO临时工Oo 2018-02-26
  • 打赏
  • 举报
回复
引用 2 楼 trocp 的回复:
可以参考一下
/**
 * JNI示例程序
 * @author Administrator
 *
 */
public class JNIUtil {

	static{
//		System.loadLibrary("RefJNI");//windows 文件路径 C:\Windows\System32\RefJNI.dll
		System.loadLibrary("JNIUtil");//linux 文件路径 /usr/lib/libJNIUtil.so
	}
	public native static String hello(String name);
	public native static int add(int data1, int data2);
	
	public static void main(String[] args) {
		String ret = hello("world");
		System.out.println(ret);

		System.out.println(add(1, 3));
	}
}
其中以下两个方法是本地dll或so中的方法: public native static String hello(String name); public native static int add(int data1, int data2);
oO临时工Oo 2018-02-26
  • 打赏
  • 举报
回复
可以参考一下
/**
 * JNI示例程序
 * @author Administrator
 *
 */
public class JNIUtil {

	static{
//		System.loadLibrary("RefJNI");//windows 文件路径 C:\Windows\System32\RefJNI.dll
		System.loadLibrary("JNIUtil");//linux 文件路径 /usr/lib/libJNIUtil.so
	}
	public native static String hello(String name);
	public native static int add(int data1, int data2);
	
	public static void main(String[] args) {
		String ret = hello("world");
		System.out.println(ret);

		System.out.println(add(1, 3));
	}
}
  • 打赏
  • 举报
回复
没有人解答下吗

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧