關於程序中使用servlet-api.jar和jsp-api.jar與服務器lib包jar包沖突的問題


    問題描述:

         程序中使用到javax.servlet.http.HttpServletRequest等類內容,然而這些類是依賴於tomcat容器lib包下的jar包,工程中導入這兩個jar包后就會和tomcat產生沖突。
 
         javax包下都是jdk提供接口規范,由第三方服務器廠商自己來實現。
 
         工程中導入的目的是為了能順利使用這兩個jar包,包含正確編譯、使用等。
 
    解決方式:
         
         1.在tomcat的context.xml中添加一段配置,這段配置的作用就是采用jvm的代理模式,優先使用父類包含的jar包。
  1. <Loaderdelegate="true"/>
         delegate值為true時,使用代理模式,加載前先訪問上級loader。   false代表從本web應用程序中查找。          
 
         2.如果使用maven,可以將依賴jar包的作用域調成provide,作用就是只在編譯、測試環境下使用,發布時jar包會由JDK或容器提供,不會發布此jar包。換言之,provide作用於不具有傳遞性。這也是與compile作用域的區別(compile會將jar發布出去)。
 
         3.編寫項目以及發布的時候將兩個jar復制到lib並加入buildpath,項目運行之前刪掉兩個jar。這種方式不方便,但是能達到效果。(不推薦)。
 
         4.無需復制jar包,直接將tomcat目錄下的jar添加到工程中。到build path中Add Library →User Library,將tomcat/lib下servlet-api.jar和jsp-api.jar放到User Library中,buildPath給工程就OK。
              






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM