在eclipse中启动tomcat加载不了项目的解决方法
一、在server视图右键选择Add and Remove时,如果想要部署的项目不在左侧的待选列表中,或是弹出警告There are no resources that can be added or removed from the server.。那么首先检查想要部署的项目是否open。如果没有,open project之后再试试。
二、若还是不行,则右键项目-->properties-->Projects Facets把下图的三个勾给打上。点击确定等待重新编译,编译完成且未出现警告的话,再重新试试.选择Dynamic Web Module的版本时,应根据dynamic web module和对应的TOMCAT 版本来设定。如果刚开始时候设置错了,则修改。

三、这时,如果项目未包含有WebContent文件夹,那么eclipse会自动创建WebContent文件夹,并将WebContent文件夹作为默认的读取lib以及jsp的路径,这时problems视图里会出一大堆错,因为编译器找不到lib包了。下图中的Web App Libraies就是从WebContent文件夹中加载的。

这时你有两个选择,第一个是把你的jsp和lib全部移动到WebContent文件夹中来,使得编译器能找到(如果是自己一个人的项目可以这么做,如果是多人协作的svn项目不推荐这么做)。第二个选择是重新配置部署路径,右键工程properties-->Deployment Assembly,remove掉/WebContent,然后add你自己的文件夹。比如我的项目放置lib和jsp以及各种资源的文件夹是web,那么add Folder 选择web,点击finish即可。如下图:

需要注意的是,即使第三步编译不报错,启动tomcat时也不一定能加载得到项目。因为有些项目的jar包可能不是从Web App Libraies里加载的,而是直接通过Add External JARS来加载的。这时候eclipse编译是没问题了,但tomcat加载时依然加载不到jsp以及lib、WEB_INF等等资源文件。因为tomcat启动时仍然是根据Deployment Assembly来寻找jsp以及lib、WEB_INF等等资源文件的。如果找不到,tomcat启动是正常的,但是你想要部署的项目不会被部署到tomcat上。
四:启动tomcat,如果能在浏览器中访问应用则说明加载成功。如果不能,则去看看有tomcat加载文件时有哪些文件漏掉了?如下图:

或者打开D:\eclipseWorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\conf\server.xml,查看<Context>标签下的路径,在我的电脑中打开此路径。

如果能在打开的文件夹中看到文件和ecplise中的一一对应,那么就说明加载成功了。左图中的WEB_INF文件夹里应包含classes文件夹,并且内容和右图中的build下的classes里的一致。(因为我的eclipse编译路径设为ccegp/build/classes,不是ccegp/web/WEB_INF/classes)


如果不是一一对应,重新启动一下tomcat,留意一下控制台输出。再不行可能得重启一下eclipse。因为有些时候配置不是立刻生效的。
参考:http://stackoverflow.com/questions/75786/eclipse-how-can-i-change-a-project-facet-from-tomcat-6-to-tomcat-5-5
在eclipse中启动tomcat加载不了项目的解决方法的更多相关文章
- Eclipse中启动tomcat: java.lang.OutOfMemoryError: PermGen space的解决方法
tomcat启动的时候出现这种错误一般是项目引用了太多的jar包,或者反射生成了太多的类,或者有太多的常量池,导致非堆内存中永久保存区域不够,就有可能会报java.lang.OutOfMemoryEr ...
- eclipse中启动tomcat,localhost:8080无法访问
问题 eclipse中启动tomcat,项目可以正常运行,但是localhost:8080无法访问. 关闭eclipse中的Tomact,直接从tomcat/bin 下的startup.bat启动,l ...
- 在eclipse中启动Tomcat报端口被占用的错误
安装配置好Tomcat之后,在浏览器中输入localhost,能正取打开页面.然后在eclipse中建立项目,创建Servlet之后,启动Tomcat,报端口被占用的错误.如图: 原因:原来已经启动了 ...
- ivy在eclipse中的重新加载
ivy在eclipse中的重新加载 如果由于网速的原因,导致了ivy没有正常的加载,可以进行ivy的重新加载: 1,右键点击项目,选择属性->Java Build Path->Librat ...
- eclipse中启动tomcat后, 无法访问localhost:8080
问题: 今天老师讲了Servlet路径问题, 做了个测试在eclipse中启动tomcat后,在浏览器地址栏输入 http://localhost8080无法访问, 提示404错误, 正常情况是可以访 ...
- springboot+thymeleaf刨坑——首页加载js/css等失败解决方法
在使用thymeleaf加载css或js样式,当我们进入登录页的时候发现,所有的样式都是加载失败的.原因是在新版中有这样一个坑……: 当我们设置了addInterceptors-注册拦截器的时候,通常 ...
- Eclipse中启动tomcat报错:A child container failed during start
我真的很崩溃,先是workspace崩了,费了好久重建的workspace,然后建立了一个小demo项目,tomcat中启动却报错,挑选其中比较重要的2条信息如下: A child container ...
- 为什么eclipse中启动tomcat后,浏览器中出现404?
问题描述: tomcat压缩包加压后,启动lib文件夹下面的startup.bat,在浏览器中输入http://localhost:8080/后出现熟悉的界面. 但是在eclipse中,jsp可以正常 ...
- eclipse中启动tomcat
0.以下即使部署好,点小猫启动tomcat,有一个问题,修改jsp文件,本地tomcat中的此jsp并没有修改,如果右键项目启动,则会修改,不知道为什么 1. 首先发布项目,项目右键,run serv ...
随机推荐
- Objective-C的 KVC和KVO
字面意思分别是: KVC是指key value coding,键值编码. KVO是指key value observing,键值观察. 直白的说法是: KVC就是将一个对象的属性及其值当做一个字典,可 ...
- spring mvc 删除返回字符串中值为null的字段
在spring的配置文件中进行一下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.Requ ...
- Unity3d之json解析研究
Unity3d之json解析研究 json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 JSON简单易用,我要好好研究一下 ...
- spring mvc1
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好 ...
- 进击的docker 二 : docker 快速入门
1.安装docker 1.1.安装环境 [root@docker ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@docke ...
- [转载]Python 资源大全
原文链接:Python 资源大全 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...
- js中js数组、对象与json之间的转换
在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...
- Find out files transfered via Bluetooth
The case was about business secret and forensic guy did a physical acquisition from a smart phone. H ...
- java io 流分类表
Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字 ...
- 4T_进程与进程间通信
∮进程 进程与程序 进程与程序是有区别的.刚吃完炸鸡腿,拿出一张餐巾纸,擦完嘴之后,在油乎乎的纸上写下以下文字 #include <stdio.h> void main() { print ...