java.lang.UnsatisfiedLinkError:sayHello()
这个问题我查了好几天,终于找到这篇文章,转载一下,希望更多人,从中找到解决方案.
转载地址:http://java.chinaitlab.com/base/838280.html
运行JSP报表程序页面出现java.lang.UnsatisfiedLinkError: CC错误有以下几种原因和处理方法:
1、请查看控制台的错误信息
a:如果控制台的消息是类似
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)
b:如果控制台的消息是类似
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。
2、如果一个webserver上有多个报表应用,请将/WEB-INF/lib/mr.jar移动到WebServer的lib目录下,确保每一个Web应用程序目录下都没有mr.jar,而只有WebServer的lib目录下有该文件,重启webserver.
3、一个Webserver上只能有一个mr.jar文件,删掉多余的mr*.jar文件,然后清除webserver临时文件,重新启动webserver。
===================================================================================
最近项目中用到了jni,于是安装了eclipse的cdt和MinGW来用,以前没怎么动过C语言,网上找了下教程,倒是挺容易的,一路弄下来也没提示什么错误,但是在最后调用本地方法时却遇到了大麻烦,总是提示找不到方法。即使一个简单的HelloWorld,也是一样
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld.print()V
奇怪了,loadLibrary()没有问题,怎么会找不到方法呢?用dll export viewer察看,导出的方法为
函数名 地址 偏移量
Java_HelloWorld_print@8 0x67741250 0x00001250
实在没办法了,只好安装庞大的visual studio重新来编译,调用成功了!
再次用dll export viewer查看,发现函数名的前面多了一条下划线
函数名 地址 偏移量
_Java_HelloWorld_print@8 0x67741250 0x00001250
看来是给MinGW少传了某个参数,经过网上查阅资料,终于找到一个解决方案:给MinGW的ld命令指定一个参数--kill-at即可
gcc -Wl, --kill-at -shared -o jnihello.dll HelloWorld.c
再次用dll export viewer查看,发现导出的函数名称变为
函数名 地址 偏移量
Java_HelloWorld_print 0x67741250 0x00001250
--kill-at指令去掉了函数名称后缀的@,并没有像msvc那样添加前缀的下划线
========================================================================
现象: 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方法时,会抛出该错误。(以上OS为Windows,若是Linux或Unix,应该是xxx.so 报错) 这是因为Web服务器已经在第一次加载该应用时,已经load了该dll,当该应用被再次热启动时,该dll将重新被加载,于是报错。解决方案: 一、将含有JNI调用的jar包部署在Web服务器的公用lib库中。Web应用再发布时可以不用加载;二、jar包部署不变,在该Web中实现一个listener,监听是否第一次启动,若不是第一次启动,屏蔽掉该jar包所含dll的加载。
java.lang.UnsatisfiedLinkError:sayHello()相关推荐
- System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found
Android Studio 配置OpenCV 的时候出现这样的提示 黄色警告libc++_shared.so" not found : System.err: java.lang.Unsa ...
- java.lang.UnsatisfiedLinkError:no jhdf5 in java.library.path问题的解决
笔者在MyEclipse中进行HDF文件的读写,遇到了java.lang.UnsatisfiedLinkError:no jhdf5 in java.library.path的问题.笔者详细地记录了整 ...
- linux下启动jconsole报 java.lang.UnsatisfiedLinkError
在linux下面启动jconsole报 java.lang.UnsatisfiedLinkError异常: java.lang.UnsatisfiedLinkError: /usr/local/jdk ...
- 分析Android :java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit
Crash 日志: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.ireader.plug.sdk/iread ...
- Caused by java.lang.UnsatisfiedLinkError Cannot load library
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library 在使用NDK调用C++代码编译而成的链接库文件的时候,有时候会出现链接错误 ...
- JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法 参考文章: (1)JNI调用native方法出现 ...
- java.lang.UnsatisfiedLinkError
java.lang.UnsatisfiedLinkError 原因:jni注册的时候匹配写错了: "(I[B)[B" 如下: static JNINativeMethod meth ...
- Android java.lang.UnsatisfiedLinkError
原文链接:http://blog.csdn.net/greenmemo/article/details/51777140 项目中使用sqlcipher加密数据库,使用了so库,模拟器运行的时候报错,换 ...
- java.lang.UnsatisfiedLinkError解决方法汇集
运行JSP报表程序页面出现java.lang.UnsatisfiedLinkError: CC错误有以下几种原因和处理方法: 1.请查看控制台的错误信息 a:如果控制台的消息是类似 java.lang ...
最新文章
- GRUB基本使用介绍
- DC-5 vulnhub靶机实战
- 导入不了css,CSS不导入。
- MySQL 数据库误删除后的数据恢复操作说明
- HTTP之Last-Modified、Etage、If-Modified-Since理论与实践(C++ Qt实现)
- Ubuntu 20.04安装微信,QQ,TIM
- 华为交换机删除配置命令access_华为交换机基本配置命令详解
- Aliplayer的各种坑
- 图像处理(8) : 模板匹配
- 苹方字体 for linux,使用macOS苹方替换Windows 10微软雅黑
- 802.11n无线网卡驱动linux,安装Broadcom Linux hybrid 无线网卡驱动总结
- 用c++写bilibili番剧抢楼程序
- 设计模式之--策略模式
- Django学习 day79之drf第三日
- 投资案例分析:投资创业公司时,VC 关注什么?
- zxing换行_为什么我的word里的横线上写完一行字不能自动换行,?
- 像素坐标系、图像坐标系、相机坐标系、世界坐标系
- SE 的 ONNX 图
- 基本概念学习(1004)---固件
- 史上最全 69 道 Spring 面试题和答案