posts - 119, comments - 62, trackbacks - 0, articles - 0

          這次項(xiàng)目開發(fā),運(yùn)行環(huán)境的tomcat版本從5.5.12升級(jí)到了6.0.18,發(fā)現(xiàn)以前的項(xiàng)目不能跑了,訪問一個(gè)很簡(jiǎn)單的jsp也會(huì)報(bào)錯(cuò),說無法編譯,報(bào)的錯(cuò)誤就是:Only a type can be imported. com.xxx.xxx.XXX resolves to a package,意思就是說你jsp頁面上引用的那個(gè)類不存在,可是在老版本明明跑的好好的,而且另一個(gè)現(xiàn)象就是項(xiàng)目根目錄下的jsp訪問沒有問題,子目錄下就報(bào)錯(cuò),google了一下,發(fā)現(xiàn)這是新版本tomcat的一個(gè)變化,就是如果不指定context的話,每一個(gè)子文件夾都會(huì)被tomcat當(dāng)作一個(gè)獨(dú)立的虛擬應(yīng)用的,所以每個(gè)子文件夾下的jsp頁面訪問的時(shí)候,都會(huì)在它的同一層找WEB-INF里面的class,這樣當(dāng)然找不到了,只有剛巧放在根目錄下的jsp文件能訪問。

          解決辦法:其實(shí)這也是自己以前寫tomcat的配置文件時(shí)候,寫法不規(guī)范造成的,以前的server.xml里面host信息代碼如下:

          <Host name="www.local.com" appBase="D://projects//myWebSite//WebContent" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
              <Alias>192.168.1.43</Alias> 
              <Context path="" docBase="" reloadable="true">
               <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www.local.com_log." suffix=".txt" timestamp="true"/>
              </Context></Host>

          這其中Context里面的docBase為空,文件路徑就靠Host里的appBase去指定,這樣tomcat認(rèn)為你這個(gè)站點(diǎn)下沒有應(yīng)用,會(huì)自動(dòng)把每個(gè)文件夾當(dāng)作一個(gè)虛擬應(yīng)用處理。修改后的代碼片段如下:

          <Host name="www.local.com" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
              <Alias>192.168.1.43</Alias> 
              <Context path="" docBase="D://projects//myWebSite//WebContent" reloadable="true">
               <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www.local.com_log." suffix=".txt" timestamp="true"/>
              </Context></Host>

          可以看到Host里面不再指定appBase了,而是在主機(jī)下建立一個(gè)應(yīng)用,應(yīng)用的文件路徑通過docBase來指定,這樣就不會(huì)再產(chǎn)生找不到class的問題了。

          ps:tomcat的這個(gè)問題好像是從5.5.28就開始了,記得以前也曾經(jīng)嘗試過升級(jí)tomcat,就發(fā)生了類似的問題,但是當(dāng)時(shí)沒充裕時(shí)間去解決,就一直把問題遺留到現(xiàn)在。


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德庆县| 宁远县| 项城市| 南陵县| 涿鹿县| 铜川市| 库伦旗| 平原县| 屏东县| 万全县| 尚义县| 门源| 百色市| 柞水县| 拜城县| 犍为县| 九江县| 建阳市| 平遥县| 肃宁县| 宜良县| 犍为县| 高青县| 鄂托克前旗| 平潭县| 泽库县| 齐河县| 海盐县| 凭祥市| 海伦市| 武汉市| 广河县| 永春县| 芦山县| 武川县| 龙海市| 通许县| 合江县| 定安县| 德庆县| 嘉禾县|