tomcat6升級tomcat8後虛擬目錄部署404的解決辦法

這是寶寶第一次在技術網站上發帖,此次必需要寫一下了- -。java

以前一直在用tomcat6,因爲要用到webSocket無奈把tomcat升級到了8,可是一直提示404,參考了一些網上的資料後試着改了一夜終於弄好了,下面把方法分享出來,但願小夥伴們少走彎路吧⊙﹏⊙‖∣web

1.右鍵項目(Eclipse)->Propperties->Project Facets->Dynamic Web Module 改爲3.1,若是不能修改請優先修改其下方Java對應版本,我用的是1.7的JDK,則改成1.7,不然會提示相似「Dynamic Web Module *.* requires Java *.* or newer.」的錯誤。
若是依然不能修改,找到以下文件並修改:
"X:\workSpace\projectName\.settings\org.eclipse.wst.common.project.facet.core.xml"tomcat

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="java"/>
  <fixed facet="jst.web"/>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="jst.web" version="3.1"/>
  <installed facet="java" version="1.7"/>
</faceted-project>

2.修改Web.xml配置文件,由於以前是tomcat6和JDK1.6建立的,因此咱們須要對老版本Web.xml進行修改,老版本頭部以下:app

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
</web-app>

咱們改成:框架

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <!-- 這裏放filter -->

  <display-name>[your project name]</display-name>
  <description>
     [your project description]
  </description>

  <!-- 這裏放jsp-config和index 404等錯誤頁 -->
</web-app>

注意上面寫的時候不要帶"[ ]"方括號eclipse

3.咱們把eclipse中項目close而後重新打開並從新構建~這樣再放到tomcat8中部署就正常了jsp

4.(送點小經驗⊙﹏⊙)我我的喜歡虛擬目錄方式部署,在不修改Server.xml和複製class到tomcat中的同時能夠直接看到的最新結果
打開你的Tomcat目錄並找到"Tomcat\conf\Catalina\localhost"目錄,沒有能夠本身手動建立文件夾,並在其目錄下建立ROOT.xml並編輯,內容以下:網站

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" docBase="X:\workSpace\projectName\WebRoot" crossContext="true" debug="3" privileged="true"  reloadable="true" deubt="true">
</Context>

這樣咱們經過eclipse啓動tomcat(非自帶tomcat控件,具體能夠本身來百度關鍵詞爲"com.sysdeo.eclipse.tomcat_3.3.1.jar")的時候就能夠直接對eclipse中代碼進行斷點跟蹤了ui

這裏還要補充下:虛擬目錄的部署方式是爲了模擬生產環境中的url結構,這樣能夠不用在http://localhost:8080/projectName/的方式進行項目訪問,而是http://localhost:8080/,固然若是你把8080端口改爲80就跟生產環境如出一轍了,但缺點也很明顯,頂級域只能部署一個項目,若是須要切換項目,這裏也有個小竅門:url

將前面建立好的ROOT.xml複製一份改成「ROOT.xml.test」,並將其中的路徑指定爲第2個項目的WebRoot或WebContent下,由於.test後綴tomcat並不會識別和生效,這樣咱們切換項目只要打開這個配置文件目錄,把後綴一改就能夠了。

最後,感謝OSChina 、 JAVA極速WEB+ORM框架 JFinal 項目以及JFinal 2k羣中全部幫助過個人小夥伴們!

相關文章
相關標籤/搜索