在MyEclipse中部署JAVA web程序并启动tomcat时,出现了如下提示信息,请问这是什么意思。 请问您的问题是如何解决?MyEclipse+tomcat,项...

\u5728MyEclipse\u4e2d\u90e8\u7f72JAVA web\u7a0b\u5e8f\u5e76\u542f\u52a8tomcat\u65f6\uff0c\u51fa\u73b0java.lang.UnsatisfiedLinkError

\u4f60\u7cfb\u7edf\u662f32\u4f4d\u7684\u5427\uff0c\u4f60\u4e0b\u8f7d\u7684tomcat\u662f64\u4f4d\u7684

\u4ece\u62a5\u9519\u4fe1\u606f\u4e0a\u770b\u4e0d\u51fa\u6765\u4ec0\u4e48\u95ee\u9898\uff0c\u53ef\u80fd\u539f\u56e0\u5982\u4e0b\uff1a

tomcat\u7684\u73af\u5883\u53d8\u91cf\u6216\u8005jdk\u6728\u6709\u914d\u7f6e\u597d\u3002eclipse\u4e0a\u9762\u7684tomcat\u4e3b\u9875\u80fd\u6253\u5f00\uff0c\u5e76\u4e0d\u4ee3\u8868tomcat\u7684\u73af\u5883\u53d8\u91cf\u5df2\u7ecf\u914d\u7f6e\u597d\u3002\u4f60\u81ea\u5df1\u5355\u72ec\u542f\u52a8\u4e00\u4e0btomcat\u7684bin\u4e0b\u9762\u7684run.bat,\u770b\u662f\u5426\u6b63\u5e38\u3002
tomcat\u53d1\u5e03\u9879\u76ee\u65f6\uff0c\u9879\u76ee\u6253\u6210war\u5305\u653e\u5728...tomcat\webapps\\u76ee\u5f55\u4e0b\u3002\u5f53tomcat\u542f\u52a8\u65f6\uff0c\u4f1a\u81ea\u52a8\u5230webapps\u76ee\u5f55\u4e0b\u89e3\u538bwar\u5305\u3002\u5982\u679cwar\u5305\u6ca1\u6709\u653e\u5728webapps\u76ee\u5f55\u4e0b\uff0c\u90a3\u4e48\u9700\u8981\u5230tomcat\u7684\u914d\u7f6e\u6587\u4ef6\u91cc\u9762\u914d\u7f6e\u8def\u5f84\u3002

运行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的加载。
========================================================================
类装入问题:UnsatisfiedLinkError
作者:Simon Burns 来源:IBM 整理日期:2007-6-3
UnsatisfiedLinkError

在把本机调用链接到对应的本机定义时,类装入器扮演着重要角色。如果程序试图装入一个不存在或者放错的本机库时,在链接阶段的解析过程会发生 UnsatisfiedLinkError。JVM 规范指定 UnsatisfiedLinkError 是:

对于声明为 native 的方法,如果 Java 虚拟机找不到和它对应的本机语言定义,就会抛出该异常。
当调用本机方法时,类装入器会尝试装入定义了该方法的本机库。如果找不到这个库,就会抛出这个错误。

清单 6 演示了抛出 UnsatisfiedLinkError 的测试用例 :

清单 6. UnsatisfiedLinkError.java
public class UnsatisfiedLinkErrorTest { public native void call_A_Native_Method(); static { System.loadLibrary("myNativeLibrary"); } public static void main(String[] args) { new UnsatisfiedLinkErrorTest().call_A_Native_Method(); } }

这段代码调用本机方法 call_A_Native_Method(),该方法是在本机库 myNativeLibrary 中定义的。因为这个库不存在,所以在程序运行时会发生以下错误:

The java class could not be loaded. java.lang.UnsatisfiedLinkError: Cant find library myNativeLibrary (myNativeLibrary.dll) in sun.boot.library.path or java.library.path sun.boot.library.path=D:/sdk/jre/bin java.library.path= D:/sdk/jre/bin at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2147) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2006) at java.lang.Runtime.loadLibrary0(Runtime.java:824) at java.lang.System.loadLibrary(System.java:908) at UnsatisfiedLinkErrorTest.<clinit>(UnsatisfiedLinkErrorTest.java:6)

本机库的装入由调用 System.loadLibrary() 方法的类的类装入器启动 —— 在清单 6 中,就是 UnsatisfiedLinkErrorTest 的类装入器。根据使用的类装入器,会搜索不同的位置:

对于由 bootstrap 类装入器装入的类,搜索 sun.boot.library.path。
对于由扩展类装入器装入的类,先搜索 java.ext.dirs,然后是 sun.boot.library.path,然后是 java.library.path。
对于由系统类装入器装入的类,搜索 sun.boot.library.path,然后是 java.library.path。
在清单 6 中,UnsatisfiedLinkErrorTest 类是由系统类装入器装入的。要装入所引用的本机库,这个类装入器先查找 sun.boot.library.path,然后查找 java.library.path。因为在两个位置中都没有需要的库,所以类装入器抛出 UnsatisfiedLinkageError。

==========================================================================
java.lang.UnsatisfiedLinkError 出现这种错误的原因是一般是java虚拟机找不到声明为native方法的本地语言定义时,出现的错误。在我的理解过程中我一般都认为是由于导入dll或者导入lib文件不正确导致的。有些需要静态导入就没有问题(即在前面加static来导入lib文件),如果是不加static导入也就是动态导入的时候,那么需要添加catch的抛出异常来解决,如

try{
System.loadLibrary("vtkCommonJava");
System.loadLibrary("vtkFilteringJava");
System.loadLibrary("vtkIOJava");
System.loadLibrary("vtkImagingJava");
System.loadLibrary("vtkGraphicsJava");
System.loadLibrary("vtkRenderingJava");
}catch(Throwable e)
{
System.out.println("The load problem");
}

这种方式来判断,或者直接在类前面添加

static{

System.loadLibrary("vtkCommonJava");
System.loadLibrary("vtkFilteringJava");
System.loadLibrary("vtkIOJava");
System.loadLibrary("vtkImagingJava");
System.loadLibrary("vtkGraphicsJava");
System.loadLibrary("vtkRenderingJava");

}
================================================================================
关于java.lang.UnsatisfiedLinkError(JNI)

目标:把pbp1.0的java包和native移到GEM中,并使GEM在新的虚拟机上正常运行
背景:GEM(1)有一堆java包和native函数,pbp1.0是虚拟机和JAVA基本包,要将pbp1.0的虚拟机移走只用它的JAVA基本包和native函数。
问题:在将GEM和pbp1.0的native函数生成一个动态库后在程序里System.loadLibrary()无法加载,报java.lang.UnsatisfiedLinkError
解决过程:
1,理论
我们知道,JAVA调用native函数时,必须通过System.loadLibrary()或System.load将其native函数所在动态库加载到虚拟机。并在运行时指明-Djava.library.path或-Dsun.boot.library.path,将其指向包含有native函数的动态库所在位置。
2,实施
我按这个步骤操作完成后就是无法加载我生成的动态库libgem.so,这个库用到的其他动态库包括:rt,pthread,freetype,dl, directfb,而directfb用到的动态库有rt,dl,pthread,freetype,jpeg,png,这些库除了directfb要生成外其余都在/lib目录下存在。
3,思路
先写了一个Hello的测试用例。发现在native里所使用到其他动态库时,无论是否存在于相关目录,仍然无法加载。然后经过修改编译选项,把所使用到的动态库连动态连接进目标库,如下:
$(GCC) -fPIC -shared -o libdirectfb.so ... -lpng -ljpeg -lpthread -lrt -ldl, -lfreetype
经过这么一个修改后,directfb可以加载。
这也说明System.loadLibrary()所加载的动态库所引用的所有符号都要能找到。如果有一个无法找到将无法加载。可以写一个空的main ()函数,对你的动态库进行连接,如果动态库里所引用的符号在指定的动态库和本身找到不到则无法编译通过,那么这个动态库也肯定加载不了。
4,问题解决
按照这个思路,对libgem.so的编译Makefile做相应修改后,问题解决!并在LD_LIBRARY_PATH加入动态库所在目录。

(1) MHP (Multimedia Home Platform) was developed by the DVB Project as the world's first open standard for interactive television. It is a Java-based environment which defines a generic interface between interactive digital applications and the terminals on which those applications execute. MHP was designed to run on DVB platforms but there was a demand to extend the interoperability it offers to other digital television platforms. This demand gave rise to GEM, or Globally Executable MHP, a framework which allows other organisations to define specifications based on MHP.

====================================================================================

另外,还可能是dll本身的问题,使用release版的,而不要用debug版的

=============================================================================
关于编写JNI时的发生的unsatisfiedlinkError错误- -

这个错误也让我郁闷了半天,现在我把它写出来,可以让大家少走点弯路。一般这个错误有两种:

1。unsatisfiedlinkError:dll名,那说明你没有把dll放到合适的位置,一般就和要调用原生函数的类放在一起,当然前提是你成功的生成dll了

2。unsatisfiedlinkError:方法名,这个时候你其实dll已经成功生成了,而且位置也正确,它的意思就是你没有定义那个函数,你可能会说,我明明定义了,其实当你发现问题所在,你只能自虐了,肯定是你在C文件中定义函数时有些字母大小写错了,因为其他地方是自动生成的,不会出错。尤其是直接从网上拷贝源程序时经常发生这种问题,有些作者不负责任,把有错误的程序也贴上去。

java.lang.UnsatisfiedLinkError: no licSetup in java.library.path
。看这个应该写的很清楚了..........

应该是三楼停电了吧

缺少licSetup.dll这个文件

包的路径有问题吧,你复制到lib里面

  • 濡備綍鏇存敼Maven鐨刯ar鍖呭瓨鍌ㄧ殑浣嶇疆
    绛旓細1锛 鎵撳紑maven瀹夎鏂囦欢澶癸紝 鎵撳埌鍏朵笅鐨刢onf鏂囦欢澶癸紝 鎵惧埌settings.xml鏂囦欢 2, 鍦╯ettings.xml鏂囦欢涓璼ettings鏍圭洰褰曚笅娣诲姞涓 <localRepository>d:/m2</localRepository> d:/m2 涓轰綘鎯宠缃殑鏈湴纾佺洏浣嶇疆 濡 娉ㄦ剰淇敼鍚庯紝濡傛灉浣跨敤鐨勬槸eclipse寮鍙戝伐鍏凤紝 瑕佸湪eclipse涓鎸囧畾:window -> preferences 涓嬶紝...
  • ...杩炴帴鏁版嵁搴(sqlserver),寮鍙戝伐鍏锋槸myeclipse濡備綍杩炴帴??
    绛旓細7鏈14鏃 13:42 1銆佺‘瀹2000鏈哄櫒涓嶴QLServer鏁版嵁搴撳湪鍚屼竴缃戞銆2銆佷袱鍙版満鍣ㄤ箣闂磋兘澶烶ING閫氾紝SQLServer鏁版嵁搴撴湇鍔″凡缁忓惎鍔ㄣ3銆2000鏈哄櫒鐨勫鎴风鏄惁宸茬粡閰嶇疆濂斤紝纭畾鍚敤鐨勫崗璁拰鍒悕銆3銆佷娇鐢≦uery Analyzer绛夊伐鍏锋煡鐪嬫槸鍚﹀彲浠ヨ繛鎺ワ紵濡傛灉涓嶈锛屽彧鑳借鏄2000鏈哄櫒鐨勭郴缁熷眬鍩熺綉閫氳鏈夐棶棰橈紝鍐嶆牴鎹儏鍐电粏鏌ュソ浜嗭紒
  • java web宸ョ▼鎬庢牱鏀瑰悕
    绛旓細Eclipse鍏佽鍦ㄥ悓涓IDE涓 闆嗘垚鏉ヨ嚜涓嶅悓渚涘簲鍟嗙殑宸ュ叿,骞跺疄鐜颁簡宸ュ叿涔嬮棿鐨勪簰鎿嶄綔鎬,浠庤屾樉钁楁敼鍙樹簡椤圭洰宸ヤ綔 娴佺▼,浣垮紑鍙戣呭彲浠ヤ笓娉ㄥ湪瀹為檯鐨勫祵鍏ュ紡鐩爣涓銆 Eclipse妗嗘灦鐨勮繖绉嶇伒娲绘ф潵婧愪簬鍏舵墿灞曠偣銆傚畠浠槸鍦╔ML涓畾涔夌殑宸茬煡鎺ュ彛,骞跺厖 褰撴彃浠剁殑鑰﹀悎鐐广傛墿灞曠偣鐨勮寖鍥村寘鎷粠鐢鍦ㄥ父瑙勮〃杩拌繃婊ゅ櫒涓殑绠鍗曞瓧绗︿覆,鍒颁竴涓狫av a...
  • 杞欢寮鍙戝伐绋嬪笀涓汉绠鍘(绮鹃8绡)
    绛旓細寮鍙戝伐鍏:MyEclipse 8.5 浜屻佸晢鍝佷氦鏄撶郴缁 椤圭洰姒傝堪:鏈郴缁熶负澶у瀷浼佷笟鎻愪緵涓涓湪绾垮晢鍝佷氦鏄撳钩鍙,骞冲彴鐨勪富瑕佺洰鐨勬槸璁╀紒涓氬湪骞冲彴涓婂彂甯冨晢鍝佸強璧勮,鐢ㄦ埛鍙互鍦ㄦ骞冲彴涓婅喘涔板晢鍝佸苟鍙備笌鍟嗗搧鐨勮瘎璁恒傚洿缁曡繖涓鐩殑,绯荤粺闇瑕佸疄鐜板晢鍝佺鐞,鍟嗗搧璁㈣喘,澶氶儴闂ㄨ鍗曞鐞,鍟嗗搧淇冮攢,鍐呭绠$悊绛夊姛鑳姐 涓昏璐熻矗: 1銆佷骇鍝佸悗鍙扮鐞:浜у搧鍏锋湁...
  • 棣栧腑鎶鏈畼CTO宸ヤ綔鐨勫矖浣嶈亴璐e崄绡
    绛旓細3銆佸叿澶囨繁鍘氱殑鎶鏈儗鏅,鏈夎緝涓板瘜鐨勫垎甯冨紡銆侀珮骞跺彂銆侀珮璐熻浇銆侀珮缂撳瓨銆侀珮鍙敤鎬х郴缁熷疄闄呭紑鍙戠粡楠,鍏锋湁浼樼鐨勭郴缁熸灦鏋勫強璁捐鑳藉姏,鎴愬姛棰嗗銆佽璁°佸紑鍙戣繃鐧句竾绾у強涓鐨勪簰鑱旂綉浜у搧,鏈変竴瀹氱殑浜у搧鎬濈淮鍜岃兘鍔; 5銆佺簿閫JA璇█鍜孲pring銆丼pringMVC妗嗘灦鎶鏈,鐔熺粌Eclipse銆MyEclipse绛夊紑鍙戝伐鍏峰強JSP/Servlet/EJB/JavaBean绛夊紑鍙戞妧鏈,鐔...
  • 扩展阅读:在myeclipse中javax ... myeclipse永久激活 ... myeclipse部署tomcat ... myeclipse jsp 红叉 ... myeclipse集成tomcat ... myeclipse使用教程视频 ... myeclipse部署web项目 ... myeclipse永久破解 ... myeclipse10汉化版 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网