1. 程式人生 > >伺服器虛擬主機,非根目錄jsp檔案的引包報錯

伺服器虛擬主機,非根目錄jsp檔案的引包報錯

最近把寫好的JEE專案上傳到伺服器後,發現所有在資料夾中的jsp頁面
在頁頭部分用<%@page import=”com.xxxx.dao.xxx”%>
匯入類後,再瀏覽器中開啟這個jsp頁面時會出現
會出現500報錯only a type can be imported: XXX resolves to package
專案根目錄

發現這個錯誤後,去百度了好久,終於受到了這篇文章的啟發:
http://blog.csdn.net/PengYuZhu/article/details/5868361

原來伺服器 /usr/local/tomcat/conf/vhost 目錄下的虛擬主機配置檔案中是這麼寫的

<Host name="www.xxx.cc" appBase="/data/wwwroot/www.xxx.cc" unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="/data/wwwroot/www.xxx.cc" reloadable="false" crossContext="true"/>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="www.xxx.cc_access_log"
suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

在標籤的屬性中,appBase這個屬性若填寫了路徑,tomcat會認為
這個目錄下的每一個資料夾,都是一個獨立的環境
所以jsp頁面去引用其他編譯好的class檔案時就會報錯

所以經過修改後,將標籤中的appBase的值置空後,重啟tomcat伺服器
再次訪問原來的頁面就可以了,錯誤完美解決

<Host name="www.xxx.cc" appBase="" unpackWARs="true" autoDeploy
="true">
<Context path="" docBase="/data/wwwroot/www.xxx.cc" reloadable="false" crossContext="true"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.xxx.cc_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host>