我的開發環境:eclipse kepler (4.3)+tomcat7.0.42.
在我想看eclipse中web項目jsp文件被tomcat轉換成java以後的java源文件的位置,發現正常情況下的webapps下面,沒有看到我部署的項目
同時,work目錄(jsp的工作目錄)下面也沒有生成相關的jsp的class文件和java源文件。但是我想看源碼啊。找了一堆關於jsp的源碼位置的文章,都說是在work下面可以找到。後來在不斷的嘗試下,我搜索了關鍵字 server locations的配置是什麼意思。找了下面的資料,加上了自己的一些補充和驗證,解決了上述問題。
首先看一下,資料內容。
配置eclipse的開發環境,配置jdk的安裝路徑和tomcat安裝路徑。在eclipse下建立Dynamic Web Project工程zhgy,在使用eclipse中new一個tomcat,通過啓動該tomcat來發布Dynamic Web Project的時候,其實並未將工程發佈到tomcat 安裝目錄所在的 webapps下。這點可以去上述的tomcat 安裝目錄 的webapps目錄下查看。從啓動時候的控制檯輸出來看項目是被髮布到了如下的目錄:
信息: Set web app root system property: 'webapp.root' = [ D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\zhgy\ ]
打開該目錄可以很清楚的看到存在zhgy這樣一個文件夾,這就是我們現在可以訪問的項目目錄。
再打開 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\ 這個目錄,可以看到這個目錄下的結構和 D:\Tomcat 7.0 的目錄結構是一模一樣的,只是多了個wtpwebapps目錄。其實 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\ 這個目錄就是eclipse的對 D:\Tomcat 7.0 目錄的一個克隆,從而使 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\也能夠具備源服務器的功能。
如果再new幾個服務器,就會在 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\ 目錄下依次出現temp0、temp1、temp2等多個克隆服務器,但是這裏每次只能啓動上面一個克隆服務器,因爲他們都使用的是相同的啓動端口(當然還有相同的關閉端口等)。
這樣會給我們帶來很多的不方便。舉個例子:就上述工程而言,當我們在進行開發的時候,項目需要將上傳的圖片放入到工程的同級目錄的upload文件夾的時候,會發現圖片是上傳到了所在的目錄 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\upload\ ,但是無法在瀏覽器中訪問到上傳的圖片。這時候我們可以手動將該upload目錄整個複製到 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\ ,這時在瀏覽器中的確就可以訪問了。造成這種現象的原因是tomcat服務器默認webapps爲工程目錄,而不是 wtpwebapps 目錄。之所能夠通過瀏覽器訪問 D:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\zhgy\ 下的zhgy這個項目,是由於eclipse通過tomcat發佈項目的時候在 D:\workSpace-jx\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\conf 目錄的server.xml文件中有如下的設置: