Tomcat报错:Document base ……does not exist or is not a readable directory – 青葱岁月 – ITeye技术网站

来源: Tomcat报错:Document base ……does not exist or is not a readable directory – 青葱岁月 – ITeye技术网站

2013年3月12:

用Eclipse A打开Eclipse B的workspace,然后在tomcat下启动某一个web工程时报错:

Shell代码  收藏代码
  1. Document base E:\Workspaces\JavaEE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\cy-manage does not exist or is not a readable directory

其中E:\Workspaces\JavaEE是我的Eclipse工作空间目录。对于这个问题一直纳闷不得其解,在网上找到了一篇相关的文章:http://blog.csdn.net/asdf544265772/article/details/7928121  文中给出原因是 tmp0\conf\server.xml 中<Context>节点配置了很多已经移除的项目;需要执行下面两步操作:

1.删除无用的 tmp0\conf\server.xml 中的  <Context>  节点;

2.删除 tmp0\work\Catalina\localhost 下的所有文件夹;

 

但是我按照他的方法去对应的目录下查找, tmp0\conf\server.xml里<Context>节点中并没有出现其余的项目。 tmp0\work\Catalina\localhost 下也没有多余文件夹。不得已,我尝试了最后的一种方法,就是把Eclipse中把Tomcat删除然后再重新配置。再次部署工程启动后发现竟然不再报错了。

 

记录一下,便于再次遇到这种问题时可以参考。

 

2013年11月20

今天又碰到了这个问题,是另外一个工程,该工程是我同事用IntelliJ IDEA建立的工程,我导入到我自己的Eclipse,配置了Project Facets之后,部署到tomcat下启动报错。

排查过程:

1.查看workspace工程目录下.settings文件夹下是否所有文件都存在,文件名称为:

Txt代码  收藏代码
  1. .jsdtscope
  2. org.eclipse.core.resources.prefs
  3. org.eclipse.jdt.core.prefs
  4. org.eclipse.m2e.core.prefs
  5. org.eclipse.wst.common.component
  6. org.eclipse.wst.common.project.facet.core.xml
  7. org.eclipse.wst.jsdt.ui.superType.container
  8. org.eclipse.wst.jsdt.ui.superType.name

如果有文件不存在,则可以从其它正常的maven web工程里拷贝一份过来。

2.检查org.eclipse.wst.common.project.facet.core.xml里的内容

Xml代码  收藏代码
  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <faceted-project>
  3.   <fixed facet=“wst.jsdt.web”/>
  4.   <installed facet=“java” version=“1.6”/>
  5.   <installed facet=“jst.web” version=“2.5”/>
  6.   <installed facet=“wst.jsdt.web” version=“1.0”/>
  7. </faceted-project>

上面就是我们配置的Project Facet信息,版本号是跟你选择的Dynamic Web Module和Java版本相关。

 

部署后还是报错,定位到了org.eclipse.wst.common.component这个文件

我看了一下我的工程该文件的内容:

Xml代码  收藏代码
  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <project-modules id=“moduleCoreId” project-version=“1.5.0”>
  3.     <wb-module deploy-name=“test-web”>
  4.         <wb-resource deploy-path=“/” source-path=“/WebContent” tag=“defaultRootSource”/>
  5.         <property name=“context-root” value=“hanting”/>
  6.         <property name=“java-output-path” value=“/hanting/target/classes”/>
  7.     </wb-module>
  8. </project-modules>

原来问题出在wb-module配置上面,source-path是默认的WebContent,但是一般的maven web工程的web资源目录是src/main/webapp,所以启动会报错,正确的配置如下:

Xml代码  收藏代码
  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <project-modules id=“moduleCoreId” project-version=“1.5.0”>
  3.     <wb-module deploy-name=“test-web”>
  4.         <wb-resource deploy-path=“/” source-path=“/src/main/webapp” tag=“defaultRootSource”/>
  5.         <wb-resource deploy-path=“/WEB-INF/classes” source-path=“/src/main/java”/>
  6.         <wb-resource deploy-path=“/WEB-INF/classes” source-path=“/src/main/resources”/>
  7.         <property name=“java-output-path” value=“/ht-manage/target/classes”/>
  8.         <property name=“context-root” value=“test-web”/>
  9.     </wb-module>
  10. </project-modules>

修改后启动工程就正常了。

附:如果启动后报java.lang.ClassNotFoundException: ContextLoaderListener错误的话可以查看我的另外一篇博客:http://chenzhou123520.iteye.com/blog/1836987

分享到: 更多 (0)