在MyEclipse中部署JAVA web程序并启动tomcat时,出现了如下提示信息,请问这是什么意思。

作者&投稿:益庙 (若有异议请与网页底部的电邮联系)
在MyEclipse中部署JAVA web程序并启动tomcat时,出现java.lang.UnsatisfiedLinkError~

你系统是32位的吧,你下载的tomcat是64位的

从报错信息上看不出来什么问题,可能原因如下:

tomcat的环境变量或者jdk木有配置好。eclipse上面的tomcat主页能打开,并不代表tomcat的环境变量已经配置好。你自己单独启动一下tomcat的bin下面的run.bat,看是否正常。
tomcat发布项目时,项目打成war包放在...tomcat\webapps\目录下。当tomcat启动时,会自动到webapps目录下解压war包。如果war包没有放在webapps目录下,那么需要到tomcat的配置文件里面配置路径。

运行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里面


myeclipse是什么意思?
MyEclipse是一种基于Eclipse平台的集成开发环境(IDE),专为Java和Web开发而设计。它提供了一组丰富的插件和工具,用于快速开发和部署Web应用程序。MyEclipse能够极大地提高开发效率和质量,同时简化整个开发流程,便于开发人员快速构建应用程序。MyEclipse拥有多种特性,包括:集成各种开发工具,如代码编辑器、调...

myeclipse哪个版本稳定好用
MyEclipse 2023版本稳定好用。MyEclipse是一款集成开发环境,广泛用于Java应用程序的开发。对于哪个版本的MyEclipse稳定好用,推荐MyEclipse 2023版本。这一版本在功能和稳定性上都有所提升,适合大多数开发者的需求。以下是 一、MyEclipse 2023版本的功能特点 MyEclipse 2023版本提供了丰富的功能,包括智能代码补全...

myeclipse和eclipse哪个好
总的来说,Eclipse和MyEclipse都是优秀的开发工具,选择哪个更好取决于你的具体需求和使用场景。如果你需要一个基础的开发环境,并且希望根据自己的需要进行定制,那么Eclipse可能是一个好的选择。如果你主要进行Web开发,并且需要一些特定的开发工具和功能,那么MyEclipse可能会更适合你。

eclipse和myeclipse哪个好
总的来说,如果你是一个开源软件的爱好者,并且需要自定义IDE的功能,Eclipse可能是一个更好的选择。而如果你需要更专门的功能和优化来提高Java Web开发效率,MyEclipse可能更适合你。

myeclipse哪个版本好用
1. 功能丰富:MyEclipse 2023最新稳定版本集成了许多功能,包括Java开发环境、集成Web开发支持、Git客户端、自动化部署等。这些功能对于开发人员来说非常实用,可以提高开发效率和便捷性。2. 兼容性强:该版本对多种操作系统和Java版本都有很好的兼容性,这意味着开发者可以在不同的平台上顺畅地使用MyEclipse...

myeclipse 哪个版本
MyEclipse的版本是MyEclipse 2023。以下是详细的解释:MyEclipse 是一款非常流行的开发工具,专门用于 Java 应用开发,具备许多强大功能,如集成的调试器、代码自动补全和代码导航等。它为开发人员提供了许多便利的工具和功能,帮助他们更高效地编写和调试代码。由于软件持续更新,功能不断优化和完善,建议访问...

eclipse和myeclipse哪个好用
MyEclipse是Eclipse的一个分支,主要针对Java Web开发进行了优化和增强。它提供了许多针对Java开发的插件和功能,如增强的代码编辑、调试和测试工具等。虽然MyEclipse在某些方面确实提供了更为专业的功能,但它是一个商业产品,需要付费使用。此外,由于MyEclipse在更新和维护方面可能会面临一些挑战,可能会让用户...

MyEclipse安装插件的三种方法与技巧
方法一:通过MyEclipse Marketplace安装插件 MyEclipse提供了一个名为Marketplace的插件市场,用户可以直接在IDE中访问并安装插件。这是最简单和最常用的方法。以下是具体步骤:1. 打开MyEclipse,点击菜单栏的“Help”选项。2. 在下拉菜单中选择“Eclipse Marketplace…”选项。3....

myeclipse是什么
MyEclipse是企业级工作平台(MyEclipseEnterprise Workbench ,简称MyEclipse),是对EclipseIDE的扩展,用于Java、Java EE以及移动应用的开发。在结构上,MyEclipse的特征可以被分为7类:JavaEE模型、WEB开发工具、EJB开发工具、应用程序服务器的连接器、JavaEE项目部署服务、数据库服务、 MyEclipse整合帮助。简单...

大学计算机系一定要知道的信息
IDEA(Java开发首选IDE,eclipse,myeclipse真的可以丢弃了 VsCode(不管前端后端开发都爱不释手的代码编辑器,各种插件支持) WebStorm(重量级前端开发工具,我在写react的时候会使用) Sequelpro(轻量级数据库客户端,真的很适合一些本地开发的人) Transmit(文件ftp传输工具,搭配Terminals使用效果更佳) Another Redis Desktop ...

沈阳市15632693942: 如何用MyEclipse运行一个.java文件.(我先用笔记本的形式创建了一个.java的文件) -
茅齿纯欣: 跟着我操作 1.打开Myeclipse 2.File\New\Java Project,然后在Project Name那里随便输入个名字,就输App1吧,然后点击Finish.附注:后面弹出的对话框选择Yes即可 3.点击App1左边的三角形符号,打开后看到名为src的源文件夹 4.右击src,...

沈阳市15632693942: myeclipse怎么编译运行java -
茅齿纯欣: 第一种方法:1、右击要运行的java程序的文件;2、选择Run As;3、再选择Java Application即可运行.第二种方法:(使用MyEclipse的快捷键)1、先打开要运行的Java文件;2、查看MyEclipse上方菜单栏,会发现有一个绿色圆形里面包裹着一个三角形的按钮;3、点击2步骤的按钮即可运行java程序.注意:运行java程序的前提是这个java文件中必须有主方法(即public static void main(String[] args)这个方法),否则没有主方法运行不了程序.

沈阳市15632693942: 怎么用MyEclipse打开一个Java Web工程 -
茅齿纯欣: myeclipse里面是可以直接运行java文件的,不需要部署到服务器上,方法是: 需要在java文件添加如下代码: public class ceshi{ public static void main(String[] args){// 这个是主函数的入口,写了这段代码才能单独执行 }

沈阳市15632693942: 怎样向MyEclipse中导入Java工程文件 -
茅齿纯欣: 这里使用的是myeclipse2014汉化版作为演示,其他版本亦然.1. 首先打开myeclipse在菜单栏中找到文件选项2.选择导入选项,在general中找到“将现有项目到工作空间中”,单击下一步3.选择浏览,以找到需要导入的java项目,这里我们选择的是e盘中的project项目,单击确定4.最后单击完成,这样一个java工程就被导入进了我们myeclipse5.在左侧的包资源管理器里可以看到刚刚导入的project项目(红框标注)

沈阳市15632693942: 怎样使用MyEclipse创建简单的java文档 -
茅齿纯欣: 1、首先,需要打开自己电脑上的MyEclipse软件,前提是已经配置好了相应的环境变量2、进入之后,会看到一个纯英文版的myEclipse.点击最上层的选项中的最左边的File按钮3、点击之后会出来一个下拉列表,选择new,然后选择java project...

沈阳市15632693942: 怎样配置MyEclipse的运行环境 -
茅齿纯欣: 1、设置默认使用的JDK和JRE环境.具体步骤:菜单window-preferences-java-Installed JRES.点中了,右边的窗口点ADD按钮,记住选择添加安装了Java目录下的JDK目录,而不是JRE目录.天价后,在列表中选择你要使用的那个jdk版本即...

沈阳市15632693942: 怎么在myeclipse6.5 中开发java,求具体步骤,谢谢 -
茅齿纯欣: file->new->java project->输入工程名->finish->选择新建的工程右键->new->package(这是建立一个包,可以省略)->输入包名finish->选择新建的包->new->class->输入类名finish—>在弹出的界面里编辑代码即可->代码编辑完成后点击上面菜单栏里的run as...->依你创建类的类型选择 java applet 或java application点ok就可以执行代码了...步骤应该很详细了吧,呵呵..

沈阳市15632693942: 如何使用myeclipse写最简单的JAVA程序?(要详细步骤) -
茅齿纯欣: 本机没有MyEclipse,我描述下大致过程 new---java Project--finish---src下--右键--new class--Demo.java(java中建类,首字母大写)--然后就是在你刚刚新建的class里添加main函数(也叫main方法或者主函数) public static void main(String[] args){}----接着在方法里添加测试代码sysout快捷键alt+/,代码自动补充完整,然后你就可以run了

沈阳市15632693942: 在myeclipse中java project怎么部署进入tomcat -
茅齿纯欣: 最佳答案是不对的,题目是问java project的项目如何添加到tomcat里面,一般tomcat可以添加的应该是web项目,所以需要进行转换:请确保你的项目是WEB项目,myeclipse下web项目的图标是这样的:,看到没有,有个小球球的,如果不是web项目,想转成web项目请右键项目,选择工程-->MyEclipse-->Project Capabilities-->Add Web Project Capabilites

沈阳市15632693942: 请教如何用MyEclipse2016编写java程序 -
茅齿纯欣: (1)创建Java项目:“File --> New --> Project --> Java Project” (2)创建Java源程序:“File --> New --> Other --> Class” (3)编译Java源程序:“Project --> Build Project” (4)运行Java程序:使用“Run --> Run As --> Java Application”菜单运行,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网