J2EE引擎出现java.lang.UnsatisfiedLinkError: CC错误的原因(2008-03-04 11:03:29)
标签:报表软件 报表工具 web报表 软件 下载 it 如意报表 分类:基本概念
运行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的加载。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/niuxinlong/archive/2009/05/13/4176612.aspx
分享到:
相关推荐
总结来说,解决`java.lang.UnsatisfiedLinkError`涉及检查库文件路径、版本匹配、IDE配置以及可能的依赖冲突。通过仔细分析`build-local.mk_setpath`文件并参考提供的博客资源,你应该能找到问题的根源并成功解决。
解决方法 后面我把原先tomcat启动环境用的jdk1.7改为了本机安装的jdk1.8就不在报错。 具体过程: 在myeclipse中点击window→preference→在搜索框中输入Tomcat→选择安装的tomcat版本,我这里是选择Tomcat 7.x→点击...
解决方案:Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeCo
Java.lang.UnsatisfiedLinkError解决方法 Java.lang.UnsatisfiedLinkError是一种常见的错误类型,通常发生在Java应用程序中,当Java程序尝试加载Native库或DLL文件时,可能会出现这种错误。本文将详细介绍Java.lang...
本文件夹专为以下错误对症下药。...Exception in thread "VFW Request Thread" java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path
Java中的`java.lang.UnsatisfiedLinkError`是一个常见的运行时异常,通常出现在Java试图加载本地(C或C++)库时找不到相应的函数或者方法。在Android开发中,尤其是在使用JNI(Java Native Interface)进行跨语言...
Exception in thread main java.lang.UnsatisfiedLinkError解决
loadLibrary msc error:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.example.xflinean-1/base.apk”],nativeLibraryDirectories=[/vendor/lib, /system/...
我在进行MapReduce本地测试的时候,遇见下面的报错: ...解决方法:①第一步:在项目工程中加入NativelO.java,注意包名必须与源码中一致 ②第二步:将access方法的返回值改为true,不让他去调用access0() 类似
最近我们发现很多用户...java.lang.UnsatisfiedLinkError: couldn't find libarcsoft_face_engine.so 原因: 在安装应用时,APK中指定的ABI目录下没有发现指定的动态库,寻找apk中动态库的规则详见 https://developer
解决java引入sigar运行时报错"java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Mem.gather",将压缩包解压后,放入本地项目lib中即可解决该类问题,该jar包由官网下载
AndroidRuntime: java.lang.UnsatisfiedLinkError: Couldn’t load airtalkee from loader dalvik.system.PathClassLoader[DexPathList[[zip file “/system/app/POCM3A.apk”, zip file “/data/data/com.cmccpo
在Android平台上进行JNI(Java Native Interface)开发时,有时会遇到`java.lang.UnsatisfiedLinkError`这样的错误,这通常表明Java程序无法找到对应的本地库方法。本问题中,开发者在将C语言编写的JNI方法转换为C++...
UnsatisfiedLinkError exception loading native library: njni10 java.lang.UnsatisfiedLinkError: jniGetOracleHome
1.错误Can't load IA 32-bit .dll on a AMD 64-bit platform解决方案 2.springboot启动报错java.lang.UnsatisfiedLinkError: no tcnative-1 in java.library.path 3.tomcat-native-1.2.24-openssl-1.1.1g-win32-bin
安装jpcap报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: C:/Windows/System32/Jpcap.dll: Can't find dependent libraries 解决办法。