Document base xxx does not exist or is not a readable direct

本文详细解析了Tomcat启动时遇到的Document base错误,原因是配置文件server.xml中Host元素的appBase属性设置不当,导致应用无法正确加载。通过调整appBase为webapps目录,问题得以解决。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

详细错误信息如下:

严重: Error starting static Resourcesjava.lang.IllegalArgumentException: Document base C:\tomcat7054\webroot\testcs_dn-web does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:136) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5089) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)十二月 09, 2014 3:21:56 下午 org.apache.catalina.core.ContainerBase startInternal严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/testcs_dn-web]] at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/testcs_dn-web]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 6 moreCaused by: org.apache.catalina.LifecycleException: Error in resourceStart() at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5270) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more十二月 09, 2014 3:21:56 下午 org.apache.catalina.core.ContainerBase startInternal严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.startup.Catalina.start(Catalina.java:689) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)Caused by: org.apache.catalina.LifecycleException: A child container failed during start at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more十二月 09, 2014 3:21:56 下午 org.apache.catalina.startup.Catalina start严重: The required Server component failed to start so Tomcat is unable to start.org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.startup.Catalina.start(Catalina.java:689) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 7 moreCaused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 9 moreCaused by: org.apache.catalina.LifecycleException: A child container failed during start at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 11 more十二月 09, 2014 3:21:56 下午 org.apache.coyote.AbstractProtocol pause信息: Pausing ProtocolHandler ["http-bio-8080"]十二月 09, 2014 3:21:56 下午 org.apache.coyote.AbstractProtocol pause信息: Pausing ProtocolHandler ["ajp-bio-8009"]十二月 09, 2014 3:21:56 下午 org.apache.catalina.core.StandardService stopInternal信息: Stopping service Catalina十二月 09, 2014 3:21:56 下午 org.apache.coyote.AbstractProtocol destroy信息: Destroying ProtocolHandler ["http-bio-8080"]十二月 09, 2014 3:21:56 下午 org.apache.coyote.AbstractProtocol destroy信息: Destroying ProtocolHandler ["ajp-bio-8009"]
解决办法:
这个问题要查看Tomcat的配置文件目录下的“server.xml”文件。
我之前解决重复加载的问题,将“<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">”的webapps改成了其它目录,
而在Eclipse中向TomcatServer中添加的项目还是会发布到webapps下,所以在启动的时候就会出现Document base C:\tomcat7054\webroot\xinghe-web does not exist or is not a readable directory的错误。
要解决这个问题将其改成“webapps”就好了。
           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
在处理文件或目录不存在或权限问题(如 UID 相关)时,通常涉及文件系统权限设置、用户身份验证及环境变量传递等多个方面。对于错误信息 "file does not exist or is not owned by uid 10292",可以从以下几个角度进行排查和解决: ### 检查文件或目录是否存在 首先确认目标文件或目录确实存在于文件系统中。可以通过命令行工具 `ls` 或 `find` 来验证其存在性。例如: ```bash ls -l /path/to/file ``` 如果文件不存在,则需要检查路径是否正确,或者文件是否被意外删除。 ### 验证文件所有权 若文件存在但提示未被 UID 10292 拥有,则需检查文件的所有者信息。使用 `ls -l` 命令查看文件的拥有者和所属组。例如: ```bash ls -l /path/to/file ``` 输出的第一列显示了文件的权限,第二列是链接数,第三列是文件拥有者,第四列是文件所属组。若文件的拥有者不是 UID 10292,则可以使用 `chown` 命令更改文件的所有者。例如: ```bash sudo chown 10292:10292 /path/to/file ``` 此命令将文件的所有者和所属组更改为 UID 和 GID 均为 10292 的用户和组。 ### 设置文件权限 除了更改文件所有权外,还需要确保文件具有适当的访问权限。可以通过 `chmod` 命令调整文件权限。例如,为了确保 UID 10292 的用户能够读取、写入和执行该文件,可以使用以下命令: ```bash chmod 700 /path/to/file ``` 这里的 `700` 表示文件所有者拥有完全权限(读、写、执行),而其他用户没有任何权限。如果希望其他用户也能读取文件,可以使用 `744` 等值。 ### 考虑环境变量的影响 在某些情况下,环境变量可能会影响文件的访问权限。例如,在 Nix 包管理器中,可以通过 `impureEnvVars` 属性指定哪些环境变量应该从调用用户的环境中传递给构建器。如果需要让特定的环境变量(如代理设置)影响文件访问行为,确保这些变量被正确传递[^4]。 ### 示例代码 以下是一个简单的 Bash 脚本示例,用于检查文件是否存在、更改文件所有者并设置权限: ```bash #!/bin/bash FILE_PATH="/path/to/file" UID=10292 # 检查文件是否存在 if [ ! -e "$FILE_PATH" ]; then echo "文件不存在,请检查路径是否正确。" exit 1 fi # 更改文件所有者 sudo chown $UID:$UID $FILE_PATH # 设置文件权限 sudo chmod 700 $FILE_PATH echo "文件所有权已更改为 UID $UID,权限设置为 700。" ``` ### 总结 解决 "file does not exist or is not owned by uid 10292" 错误的关键步骤包括:确认文件存在性、验证和更改文件所有权、设置适当的文件权限以及考虑环境变量的影响。通过上述方法,可以有效地解决与文件或目录不存在或权限相关的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值