Eclipse中使用tomcat对于是否启动的误解

Eclipse是开发过程的IDE,假如你和我一样,使用Eclipse开发一个java语言中的maven的web项目,在开发过程中肯定会对项目进行调试。
调试的方法,就是在Eclipse上启动操作系统中安装好的tomcat,然后让自己的web项目run on server,也就是让自己的项目在eclipse的tomcat上运行,看看效果。
这个时候,也就是调试的时候,eclipse和tomcat是什么关系呢?
简单描述,eclipse使用tomcat。
操作系统上安装的tomcat如下图所示:

但是,当你通过eclipse运行tomcat的时候,你使用的tomcat并不是它,你的项目也没有运行在这个webapps目录下。
为什么呢?因为,你在eclipse上配置好的tomcat,写着呢:

上图写的很清楚,eclipse中配置的tomcat这个server,所在的位置(Server Location) 位于workspace下的.metadata.pluginsorg.eclipse.wst.server.coretmp0这个server path,这个路径。这个路径才是eclipse中你用到的tomcat服务器的路径。
你所发布的项目,实际上是在上述路径下 wtpwebapps这个deploy path中,也就是名为wtpwebapps这个目录下。

如果你还是有点不明白,让我们回顾一下eclipse中配置tomcat的过程



上述步骤后,你就将操作系统上的tomcat配置到了eclipse上。
双击你的server也就是tomcat你就能看到tomcat的属性

然后,自然而然的,我们肯定想要启动tomcat,看看效果:



你惊奇的发现,哇,这一切都是为什么???
明明看上去tomcat已经运行起来了,却看不到可爱的小狮子画面呢?
小狮子画面原本应该是这样的:

注意到,上图是我先关闭eclipse中的tomcat然后去cmd中startup,然后打开浏览器访问tomcat默认首页的效果。
这就怪了,我们的tomcat明明是可以运行的,但是为什么通过eclipse使用tomcat就无法访问这个最初的页面呢?
相信明白了server path 和 deploy path这两个概念以后,你应该能想到,原因是,你的eclipse的server path中没有ROOT这个目录以及目录中的jsp页面,所以当然看不到喽

上图实际上只能体现出一个大意,如果你仔细看看这两个tomcat的配置文件,同时结合tomcat中host站点 context应用等概念,一起想一想。你会发现你刚刚试图在eclipse中的浏览器访问的http://localhost:6054/ 的ROOT目录和你使用操作系统访问的http://localhost:6054/ 的ROOT目录,根本就是两个地方,让我们看看这两个不同的tomcat下同名的“应用”有什么区别

看到了吧
当你在eclipse中使用浏览器访问看到404画面,误以为eclipse中的tomcat没有启动的时候,其实,你错了。
eclipse中tomcat是否启动取决于console中有没有报错,和server中显示的tomcat的状态
你之所以看到404画面,完全是因为eclipse使用的tomcat对应的wtpwebapps目录中的ROOT应用,里面没有内容,完全是空的。
下面,我们将这些内容复制到eclipse中tomcat的对应目录:

然后我们去eclipse中重新启动tomcat

小狮子出现了。
因此对于开发和调试的过程,我们必须要掌握tomcat的结构,容器的概念,pipeline-value的概念和,配置方法的概念,这些都是基本功,掌握了这些以后才能够快速判断出,自己的代码是否真的出现了问题。

时间: 2024-11-02 08:48:31

Eclipse中使用tomcat对于是否启动的误解的相关文章

ECLIPSE中配置TOMCAT中的JDK所出现的问题

问题描述 我的ECLIPSE中的TOMCAT可以正常启动,代码可以用RUN执行,不能用DEBUG调试,提示cannotfindafreesocketfordebugger!请问是什么原因?第一次发帖,做的不到位的请指正. 解决方案 解决方案二:我的资源里有本myeclipse教程,介绍的很详细,特别是关于JDK,TOMCAT部署有需要的朋友可以去看看:)解决方案三:关掉防火墙试试解决方案四:在TomcatLaunchMode的Debugmode和Runmode多切换几次在有就是检查一下你的防火墙

tomcat启动失败,不管是eclipse中还是MyEclipse中都是启动失败

问题描述 tomcat启动失败,不管是eclipse中还是MyEclipse中都是启动失败 2015-9-10 22:32:05 org.apache.catalina.core.AprLifecycleListener init信息: Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.4.8.2015-9-10 22:32:05 org.apache.catalina.core.AprLifecyc

web.xml-在线等,在eclipse中引入其他项目,启动tomcat报错

问题描述 在线等,在eclipse中引入其他项目,启动tomcat报错 SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardCon

关于eclipse中配置tomcat的问题

问题描述 关于eclipse中配置tomcat的问题 自己原来写java用的eclipse,后来写jsp的时候,用editplus写,然后放入定义好的文件, 用浏览器看运行结果,最近下了web的插件,想在Java中编写jsp代码,但是卡在tomcat 和eclipse的相互配置上. 现在我想把写好的jsp文件保存在自己的D盘JspWeb目录下, 自己浏览器默认的端口改成了80,我的原来的路径是这样的 < Context=path"JspWeb" docBase="D:J

如何在Eclipse中添加Tomcat的jar包

原文:如何在Eclipse中添加Tomcat的jar包 右键项目工程,点击Java Build Path 点击Add Library,选择Server Runtime 选择Tomcat版本 此时就看到拥有了Tomcat的jar包了

Eclipse中运行Tomcat遇到的内存溢出错误

使用Eclipse(版本Indigo 3.7)调试Java项目的时候,遇到了下面的错误: Exception in thread "main" Java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) 很明显是内存溢出的错误,在Eclipse集

在eclipse中修改tomcat端口

惯例: 我是温浩然: 很多时候,因为项目,tomcat需要多开而导致端口冲突,咱们可以到tomcat下的server.xml中修改tomcat端口,其实,如果是eclipse中修改端口,很简单,在你想要运行的服务器上双击, 图片如下. 步骤1:双击服务器,出现如上页面. 步骤2:修改遇到冲突的端口. 步骤3:HTTP/1.1 这个端口,默认是8080 ,就是你项目运行的端口,改成80 为缺省配置,就是,如果不输入端口,默认就是80端口.

eclipse中调试tomcat下的web应用

有时新建web项目,jsp报错,找不到javax.servlet.http等与server有关的类,是因为没有引入依赖的jar包.步骤如下: elipse中,依次选择window|preferences|server|Runtime Environment|Add,出现下面界面. 图1 添加 serverRuntime 指定tomcat版本号与文件夹路径就可以了. 然后添加seerver有关的library.见下图. 图2 添加serverLibrary 指定项目文件与部署文件的映射关系,见图3

请问在eclipse中设置tomcat的vm参数和jdk的vm参数有什么不同啊,谢谢

问题描述 比如说设置堆内存的大小在这两个地方都可以设置,有什么不一样吗,谢谢再问一个问题,我jdk的编译级别设置为1.4,而jdk是1.5,那么这个1.5还有意义吗,是不是和1.4起的效果是意义的了,谢谢 解决方案 tomcat启动的时候 会依赖jdk 但是只有运行web项目的时候 会启动tomcat jdk是只要运行class文件就需要的 如果设置了jdk的参数 那么这个参数在java项目内也会起作用 而tomcat的参数值 会在运行web项目的时候起作用 如果你使用1.4 而安装的是1.5