2010-12-02 30 views
9

我在工作區中有幾個動態web項目,每個都包含類並引用其他實用程序項目(簡單Java項目)和第三方jar。使用eclipse wtp將web項目發佈到tomcat後丟失的類

這些應用程序(動態Web項目)部署在使用eclipse WTP(赫利俄斯3.6)

當我更新我的工作區和新的類/資源/罐從SVN倉庫提取,我重新tomcat的v6.0.6 - 在tomcat應用程序中發佈我的應用程序,然後重新啓動它。

偶爾,當tomcat啓動我的一個應用程序時,它會拋出ClassNotFoundException異常,或者抱怨其他缺失的資源。有時我發現部署的資源(例如spring beans xml)不是最新的,並且其中包含「舊」內容。

共同抗巫術黑魔法處理我用: *停止/啓動tomcat *乾淨(當服務器配置右鍵) *清潔Tomcat的工作目錄 *刪除tomcat的所有應用程序,乾淨,重新啓動tomcat,添加所有應用程序

我需要運行這個'過程'幾次,直到問題解決。

你們也受苦嗎?這是一個已知的錯誤 ? 有什麼建議如何解決它?是用jar而不是實用工程來解決/減少這個問題?

我會考慮使用嵌入式碼頭,我只是想避免在'生產'環境中運行Jetty的專有腳本。

- Yonatan

+0

這也發生在我身上。同樣的伏都教適用。我唯一的解決方案是不幸地不使用eclipse/wtp – Ran 2010-12-02 19:34:56

+0

我也是......... – mjaggard 2013-05-02 10:44:15

+0

當我遇到這個問題時,我注意到的一件事是當我忽略eclipse項目中的構建文件夾時(使用屬性 - >資源 - >資源過濾器),添加文件夾的一切都很好.. – Chandu 2016-09-27 13:22:48

回答

3

它發生在我身上很多。我不會稱之爲巫毒。我認爲Eclipse WTP在後臺更改內容時效果不佳(例如Maven構建)。

我做什麼來解決這個問題是爲了避免完全使用它。相反,我使用Maven WAR插件來部署應用程序:

mvn war:inplace tomcat:inplace -DskipTests=true 

這個工作速度非常快,因爲它不需要組裝和打包戰爭。

然後取消部署應用程序:

mvn tomcat:undeploy 

我有腳本,

  • 部署並啓動tomact
  • 取消部署和停止Tomcat

它看起來是這樣的:

啓動Tomcat和部署應用程序:

#!/bin/sh 

if [ -f $CATALINA_PID ]; then 
    echo "tomcat already running with pid " `cat $CATALINA_PID` 
    exit 1 
fi 

java -Dmy.arg=val -Dcatalina.home=<catalina-home> -Dlog4j.configuration=file:///log4j.xml -classpath <path-to-tomcat-lib>/bootstrap.jar:/usr/lib/jvm/java-6-sun-1.6.0.20/lib/tools.jar org.apache.catalina.startup.Bootstrap start & 

echo $! > $CATALINA_PID 

mvn war:inplace tomcat:inplace -DskipTests=true 

取消部署和停止Tomcat:

#!/bin/sh 

mvn tomcat:undeploy 

<path-to-tomcat>/shutdown.sh -force 

rm $CATALINA_PID 

與可能的任何其他構建腳本一樣 - 它只是你多少代碼有問題寫。

我選擇了Maven的戰爭:就地的目標是因爲它做的很少,因此運行速度非常快。看到這裏:maven.apache.org/plugins/maven-war-plugin/usage.html

BTW,ANT和搖籃有戰爭任務/插件,它大概可以配置做同樣的事情(我真的不記得...)

希望這有助於。

+0

eran-是否意味着我需要使用maven來管理我所有的依賴?或者我可以僅將它用於戰爭部署? – 2010-12-04 06:33:52

1

有趣的行爲....類似的事情發生了什麼我的Linux機器上由於權限問題。

無論如何,我建議不要使用WTP。嘗試使用ant構建腳本。它簡單,對我來說它的工作非常出色。

1

自Eclipse問世以來,它一直在與Eclipse合作,這些問題一直存在。到達這裏是因爲atm我的web.xml不再被部署。特別是與m2eclipse結合使用時,你永遠不會知道當你嘗試啓動Tomcat時會發生什麼。我認識的每個人如何處理Eclipse都有這些問題,我不明白他們爲什麼沒有修復......並且不幸的是,作爲承包商工作意味着我無法選擇我的IDE或容器或發佈完成的方式,所以大部分時間我都支持WTP。

1

要注意的另一件事是Project -> Build Automatically應該啓用,並且項目不應該有任何生成路徑問題。

打開導航器視圖並確認構建文件夾已生成class文件。

如果文件沒有被建立,他們將不會被髮布。雖然這看起來很明顯,但看起來很容易,浪費了我很多時間。

0

一個可能的解決方案可能是您的bin文件夾沒有被創建。檢查你是否還沒有刪除build/bin文件夾,它確實存在於你的工作空間中。

1

我有一個類似的問題。當我發佈一個Web應用程序時,Eclipse沒有包含jar中的一個,因此通過Eclipse進行發佈會導致失敗。我通過修改項目的.classpath文件來糾正這個問題,從而糾正如下的依賴關係。確保它與其他罐子配置同步。

<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17.jar" sourcepath="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17-sources.jar"> 
      <attributes> 
      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
     </attributes> 
     </classpathentry> 
相關問題