`
chenzhou123520
  • 浏览: 4260717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat报错:Document base ……does not exist or is not a readable directory

阅读更多

2013年3月12:

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

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文件夹下是否所有文件都存在,文件名称为:

.jsdtscope
org.eclipse.core.resources.prefs
org.eclipse.jdt.core.prefs
org.eclipse.m2e.core.prefs
org.eclipse.wst.common.component
org.eclipse.wst.common.project.facet.core.xml
org.eclipse.wst.jsdt.ui.superType.container
org.eclipse.wst.jsdt.ui.superType.name

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

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

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="java" version="1.6"/>
  <installed facet="jst.web" version="2.5"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

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

 

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

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

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="test-web">
        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
        <property name="context-root" value="hanting"/>
        <property name="java-output-path" value="/hanting/target/classes"/>
    </wb-module>
</project-modules>

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

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="test-web">
        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
        <property name="java-output-path" value="/ht-manage/target/classes"/>
        <property name="context-root" value="test-web"/>
    </wb-module>
</project-modules>

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics