引入HBase依賴包帶來的麻煩
- 2020 年 4 月 2 日
- 筆記
在一個項目里用到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)
總結一下:一般遇到這種問題解決思路:
1)通過異常找到關鍵字,確定衝突的類或者方法
2)使用mvn dependency:tree檢查是從哪個依賴的POM裏面搞進來的衝突
3)修改項目中POM文件中的依賴,將衝突的exclude掉
4)重新打包部署