在Eclipse中调试Tomcat
Tomcat
1、下载源码,并解压文件,例如:E:\Programe\javaWorkShop\OA\Tomcat6
2、新建项目Java Project
3、从File System中导入
4、配置source
5、添加依赖包,我都是从eclipse插件中找到
主要包如下:
添加依赖后,基本上错误都消失
6、copy 文件:build.properties.default。并修改名称为build.properties,修改配置项:
base.path=E:/Programe/javaWorkShop/OA/Tomcat6/share
7、打开ant视图,打开build.xml
执行download。会下载依赖的文件到share目录:
8、执行deploy,将会生成output目录:
9、找到类:Bootstrap.java
右键配置运行参数:"-Dcatalina.home=E:/Programe/javaWorkShop/OA/Tomcat6/output/build"
10、运行,和平时运行startup.bat一样的结果:
2012-7-1 20:50:50 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2012-7-1 20:50:50 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2012-7-1 20:50:50 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/15 config=null
2012-7-1 20:50:50 org.apache.catalina.startup.Catalina start
信息: Server startup in 447 ms FAQ:
1、出错信息:
严重: Error configuring application listener of class listeners.SessionListener
java.lang.ClassNotFoundException: listeners.SessionListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1200)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3769)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4335)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:919)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:882)
原因:这个是因为在webapp下面的example例子中的web.xml文件配置了Listener
java.lang.ClassNotFoundException: listeners.SessionListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1200)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3769)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4335)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:919)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:882)
原因:这个是因为在webapp下面的example例子中的web.xml文件配置了Listener
<!-- Define example application events listeners -->
<listener>
<listener-class>listeners.ContextListener</listener-class>
</listener>
<listener>
<listener-class>listeners.SessionListener</listener-class>
</listener>
<listener>
<listener-class>listeners.ContextListener</listener-class>
</listener>
<listener>
<listener-class>listeners.SessionListener</listener-class>
</listener>
有人说删除这个例子就可以运行,但是这个不是根本解决方法,经过分析,我发现是运行deploy时失败导致,只有成功deploy就可以正常运行
2、不设置"-Dcatalina.home=E:/Programe/javaWorkShop/OA/Tomcat6/output/build"是否可以?
答:不行,启动时需要读取conf/server.xml等,需要依赖lib包等,必须设置
参考: