出现java.lang.UnsatisfiedLinkError错误

鹰之水舞 Java异常处理 最后由 liangyuan 于2015年07月06日回复

  • 1 回答
  • 3.9k 浏览

程序中报java.lang.UnsatisfiedLinkError错误,代码没有错误的

  • liangyuan 2015年07月06日 回答 #1楼
  • 一、查看控制台的错误信息

      1、如果控制台的消息是类似

      java.lang.UnsatisfiedLinkError: no MRChkLib in java.library.path,Error loading library MRChkLib

      那么是因为MRChkLib.dll没有拷贝到windows的System32目录下。

      MRChkLib.dll是加密锁的JAVA接口文件,文件在报表安装目录DogDriver/JavaAPI下可以找到。并且要注意PATH环境变量中要包含System32目录。

      如果服务器操作系统是Linux,那么使用报表安装目录DogDriver/JavaAPI 下的libMRChkLib.so文件,将libMRChkLib.so复制到WebServer的启动bin目录。

      如果在这个目录下仍然出现can not load library错误,请设置系统环境变量LD_LIBRARY_PATH的值为libMRChkLib.so所在的目录。

      例如:如果libMRChkLib.so在/somedir目录下,则 export    

      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/somedir)

      2、如果控制台的消息是类似

      java.lang.unsatisfiedLinkError :native libery c:/winnt/system32/mrchklib.dll already loaded in another classLoader error loading mrchklib.dll

      那么是因为WebAPP在重新被启动之后,无法再次加载动态库造成的,这是java的约束,Java不允许一个实例加载多次动态 库.可以这样解决,将mr.jar拷贝到WebServer的lib目录,删除/WEB-INF/lib目录下的mr.jar,然后重新启动 webserver。

      二、如果一个webserver上有多个报表应用,请将/WEB-INF/lib/mr.jar移动到WebServer的lib目录下,确保每一个Web应用程序目录下都没有mr.jar,而只有WebServer的lib目录下有该文件,重启webserver。


      三、一个Webserver上只能有一个mr.jar文件,删掉多余的mr*.jar文件,然后清除webserver临时文件,重新启动webserver。

  • 0 评论