Exception和Error分析(—)—UnsatisfiedLinkError

简介:


现象:

java.lang.UnsatisfiedLinkError:
Native Library xxx.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1551)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1511)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
 
分析:
这种错误在我们使用热启动方式发布某个使用了JNI技术的Web应用时,并将调用年native方法的jar包独立部署在该应用下面,当我们的Web应用有了更新以后,在调用到该jar包封装的native方法时,会抛出该错误。(以上OSWindows,若是LinuxUnix,应该是xxx.so报错)
这是因为Web服务器已经在第一次加载该应用时,已经load了该dll,当该应用被再次热启动时,该dll将重新被加载,于是报错。
 
解决方案:
一、将含有JNI调用的jar包部署在Web服务器的公用lib库中。Web应用再发布时可以不用加载;
二、jar包部署不变,在该Web中实现一个listener,监听是否第一次启动,若不是第一次启动,屏蔽掉该jar包所含dll的加载。



  本文转自 cuiyingfeng 51CTO博客,原文链接: http://blog.51cto.com/cuiyingfeng/6819 ,如需转载请自行联系原作者
相关文章
|
7月前
|
Java 程序员
Java异常处理:Error和Exception有什么区别?
Java异常处理:Error和Exception有什么区别?
273 0
|
7月前
|
监控 Java 程序员
详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)
详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)
165 0
|
Java
Exception 和 Error 有什么区别?
Java 平台对不同的异常进行了分类,具体被分为了 Exception 和 Error,他们都是继承了 Throwable 类。
107 0
Exception 和 Error 有什么区别?
Handler processing failed; nested exception is java.lang.NoSuchMethodError:
Handler processing failed; nested exception is java.lang.NoSuchMethodError:
222 0
|
存储 前端开发 Java
Exception 和 Error
Exception 和 Error
86 0
|
Java API Spring
RuntimeException和Exception的区别
RuntimeException和Exception的区别
231 0
|
安全 Java 数据库连接
Exception和Error有什么区别吗
Exception和Error有什么区别吗
228 1
|
安全 Java 数据库连接
Java中的异常处理详解(try、catch、finally、throw、throws)
Java中的异常处理详解(try、catch、finally、throw、throws)
319 1
Exception和Error 有什么区别
Exception和Error 有什么区别
157 0
Exception和Error 有什么区别
|
安全 Java 程序员
Exception和Error的区别
Exception和Error的
212 0