zoukankan      html  css  js  c++  java
  • 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 。

     

  • 相关阅读:
    使用Uiautomator语法定位元素时,报错此元素不是一个字符串 is not a string 【已解决】
    真机使用adb命令打开包名报错 java.lang.SecurityException: Permission Denial: starting Intent 【已解决】
    Genymotion安装apk时报错 Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113] 【已解决】
    python+appium【第四章-adb命令之monkey命令】
    python+appium【第三章-adb命令之日志打印】
    弄明白5种IO模型
    Java网络编程
    Java中抽象类的构造器的作用
    mysql中sum与if,case when 结合使用
    逆向实战 | galgame的汉化研究(新坑)
  • 原文地址:https://www.cnblogs.com/microsoftjava/p/SSH.html
Copyright © 2011-2022 走看看