java.lang.IllegalArgumentException:文档库tomcat \ webapps \ appdata不存在或不是可读目录

时间:2012-06-07 15:50:50

标签: java tomcat war

我之前在我的本地Tomcat(6.0.35)实例上部署了一个名为appdata.war的WAR,因此webapps目录看起来像:

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重新部署它)。然后我重新运行了启动脚本,并在catalina日志中看到了这一点:

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本身有问题,那么我在哪里开始调试?通常这些“因先前错误而失败”的输出也包括错误的原因或来源;这个输出非常简洁,含糊不清。提前谢谢!

2 个答案:

答案 0 :(得分:5)

查看${TOMCAT.HOME}/conf/Catalina/localhost/appdata.xml并删除它(如果存在)。

答案 1 :(得分:0)

我有同样的错误(文档库...不存在或不是可读目录)。简单的解决方案是在现有的Tomcat上重新安装Tomcat(忽略警告“无法安装服务”,因为它已经存在)。