2012-06-07 37 views
3

我有一個以前部署在本地Tomcat(6.0.35)實例上的WAR,名爲appdata.war,所以webapps目錄看起來像像:java.lang.IllegalArgumentException:文檔庫tomcat webapps appdata不存在或不是一個可讀的目錄

webapps/ 
    docs/ 
    examples/ 
    host-manager/ 
    manager/ 
    appdata/ (exploded WAR) 
    ROOT/ 
    appdata.war 

我刪除appdata/appdata.war(這樣的Tomcat不會嘗試重新部署),然後添加一個新的戰爭(appmon-qa.war)到該目錄。然後我運行了Tomcat啓動腳本,發現引用了「舊」appdata WAR的部署錯誤。我戳了一下,看到一個名稱爲${TOMCAT.HOME}/work/Catalina/localhost/appdata的文件夾,我刪除了它(再一次,只是爲了防止Tomcat重新部署它)。然後我重新運行啓動腳本和我的卡塔利娜日誌中看到的是:

SEVERE: Error starting static Resources 
java.lang.IllegalArgumentException: Document base C:\Program Files\Apache\apache-tomcat-6.0.35\webapps\appdata does not exist or is not a readable directory 
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:   
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4320) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4489) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    ...rest of stacktrace omitted for brevity 
Jun 7, 2012 11:35:27 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error in resourceStart() 
Jun 7, 2012 11:35:27 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error getConfigured 
Jun 7, 2012 11:35:27 AM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/appdata] startup failed due to previous errors 
Jun 7, 2012 11:35:27 AM org.apache.catalina.core.StandardContext stop 
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/appdata] has not been started 
Jun 7, 2012 11:35:27 AM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deploying web application archive appmon-qa.war 
Jun 7, 2012 11:35:28 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
Jun 7, 2012 11:35:28 AM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/appmon-qa] startup failed due to previous errors 

假設我的哦,所以,完全寫appmon-qa.war應用程序是不能因爲一些鬼參考這個部署舊appdata.war應用程序。如果是這樣,我是否(正確)從Tomcat中徹底取消部署或刪除它,以便它不會導致我的新應用程序出現問題?

否則,如果此日誌輸出指示appmon-qa.war本身出現問題,那麼我在哪裏開始調試?通常這些「由於以前的錯誤而失敗」的輸出還包括錯誤的原因或來源;這個輸出非常不具說明性和含糊。提前致謝!

回答

4

看看${TOMCAT.HOME}/conf/Catalina/localhost/appdata.xml並刪除它,如果它存在。

+0

感謝@adarshr,但'localhost'目錄內沒有XML文件。我看到'localhost/appdata /',但它是一個空目錄。當我刪除它並重新運行啓動腳本時,會發生同樣的情況,但是'localhost/appdata /'目錄被重新創建! (顯然有一些內部引用'appdata'!)Tomcat使用嵌入式數據庫還是什麼?!? – IAmYourFaja

+0

您可能會在'webapps'或類似的其他熱部署目錄中顯示'appdata.war'文件。如果你保留'.war'文件,它會被自動分解和部署。 – adarshr

+0

正如我原來的帖子所解釋的,我從webapps中刪除了WAR和爆炸目錄 - 是否有隱藏/深層嵌套的目錄,其中Tomcat 6.0.35將WAR複製或引用它們? – IAmYourFaja

0

我有這個相同的錯誤(文檔庫...不存在或不是一個可讀的目錄)。簡單的解決方案是將Tomcat重新安裝到現有的Tomcat上(忽略警告「無法安裝服務」,因爲它已經在那裏了)。

相關問題