SSH整合后部署到Tomcat服务器的jar包的报错问题解决方法

  在SSH整合后,部署到Tomcat服务器上,启动Tomcat,启动过程Tomcat服务器会抛出异常如下:

  “严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

  java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener...” 

  分析:首先从这个异常可以看出,ClassNotFoundException,没有找到指定的类"org.springframework.web.context.ContextLoaderListener",这个类是spring整合jar中的类,

在spring-web包中,所以,首先确定自己是否导入该jar包:

如图所示,导入jar包的两种方式:上面箭头指向的方式是将spring-3.2.web作为一个User Library直接导入到项目当中,而下面箭头指向的方式是直接把对应包放到WEB-INF/lib文件夹下再导入的方式,这两种方式任意一种都可以,但推荐上面的方式。

  如果检查后发现jar包已确实导入,那么可能的情况就是项目在部署到Tomcat服务器中时,没有把相关的jar都加载到服务器中,所以打开Tomcat安装文件,找到部署项目的文件夹下,查看jar是否存在,地址同样是项目的WEB-INF/lib下。

      如果确实没有jar包,则需要在eclipse当中配置,右键项目--->选择properties--->选择deployment assembly--->将自己定义的User Library添加进去,这样在部署项目时,eclipse会将选中的User Library的所有jar包复制到Tomcat的项目lib目录下,这样就可以加载了。

 

原理:造成这个问题的原因主要在java classloader,对于纯Java项目,不存在WEB-INF目录,所以在引入jar包的时候一般都是通过buildpath直接引入,例如我要引入Hibernate,那么先定义一个User Library,然后通过build path引入即可。纯java项目使用的本地自己的JRE,那么classLoader在加载jar和class时候是分开的,对于我们自己编写的class,会在APP_HOME/bin下。导入的jar包或者user library的配置信息会出现在APP_HOME/.classpath文件中,ClassLoader会很智能去加载这些classes和jar。

而对于Java Web项目,虽然eclipse的workspace中仍然有.classpath文件,但即使你导入的了自己定义的user library,它也不会出现在.classpath中。项目最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。

以Tomcat典型结果为例,它的目录结构分别对应四个不同的类加载器,关系如下:

  common      ---   CommonClassLoader

  server          ---    CatalinaClassLoader

  shared         ---    SharedClassLoader

  webapps     ---    WebappClassLoader

我们的 web 应用都是部署到 webapps 目录下,而WebappClassLoader加载器专门负责加载 webapps 下所有web项目的 WEB-INF 下的类库和类文件。而我们通过 User Library 引入的 jar 包是不会被 WebappClassLoader 加载器加载,所以才会出现 ClassNotFoundException 。

 

 

转载于:https://www.cnblogs.com/microsoftjava/p/SSH.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jar包部署到远程服务器的步骤如下: 1. 在本地开发环境中,将jar包构建成可执行的可运行文件,例如可通过命令行 java -jar 运行的jar文件。 2. 登录远程服务器,可以使用SSH等方式远程登录服务器。 3. 在服务器上创建一个目录,用于存放部署jar包和相关的文件。可以使用命令mkdir来创建目录,例如mkdir /home/user/app。 4. 将本地构建好的jar包通过SCP等工具或命令,将jar包上传到远程服务器的目录中。例如scp /path/to/app.jar user@servername:/home/user/app。 5. 进入服务器上的目录,通过命令cd /home/user/app进入刚才创建的目录。 6. 使用命令java -jar app.jar来启动jar包服务器将会开始执行应用程序。 7. 可以使用nohup等命令将jar包以后台方式启动,例如nohup java -jar app.jar &,这样就可以在关闭终端时保持应用程序的运行。 8. 如果需要对jar包进行配置,可以创建一个配置文件,例如application.properties,将配置文件放在服务器上的目录中。 9. 在启动jar包时,通过指定配置文件的方式,例如java -jar app.jar --spring.config.name=application,来加载指定的配置文件。 10. 如果需要对jar包进行更新,可以重新构建jar并将其上传至远程服务器的目录中,然后通过杀死当前运行的java进程,并重新执行步骤6来启动新的jar包。 通过以上步骤执行,就可以将jar包成功部署到远程服务器中,并启动应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值