• 引入HBase依赖包带来的麻烦


    在一个项目里用到HBase做底层存储,使用maven来管理相关Jar包依赖,用maven来管理依赖包,特别不爽的就是他会将你引入Jar包自己的依赖都搞进来,经常会出现一些类和方法冲突找不到等状况。这次,也被这个搞了一阵子。我依赖了HBase jar之后,tomcat启动后,访问Web页面(使用JSP)的时候,页面直接抛出一堆异常,贴一下关键的:

    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
        org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
        org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:80)
        org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
        org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
        org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
        org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
        org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    分析得出就是因为引入了apace的jasper导致的,HBase依赖的tomcat:jasper-compiler和tomcat:jasper-runtime搞得我web页面的JSP访问失败。很自然而然地就得将这个jar从hbase依赖POM里面exclude掉。然后重新打包发布即可。

    总结一下:一般遇到这种问题解决思路:

    1)通过异常找到关键字,确定冲突的类或者方法

    2)使用mvn dependency:tree检查是从哪个依赖的POM里面搞进来的冲突

    3)修改项目中POM文件中的依赖,将冲突的exclude掉

    4)重新打包部署

  • 相关阅读:
    成功交付离岸项目
    利用CSP探测网站登陆状态
    Web NFC API
    HTML/W3C-WHATWG-Differences
    MIT教授将网页开发整合为完整独立的程式语言Ur/Web
    移动端前端开发调试
    从0到100——知乎架构变迁史
    C++之再续前缘(一)——C++基础(与C语言的差异)(上)
    又爱又恨系列之枚举enum
    数据结构之队列(三)——循环队列
  • 原文地址:https://www.cnblogs.com/nexiyi/p/hbase_dependency_problem.html
Copyright © 2020-2023  润新知