tomcat源码_调试tomcat源码步骤

内容如下:


<?xml version="1.0" encoding="UTF-8"?>4.0.0org.apache.tomcat Tomcat Tomcat9.01.8ant ant 1.6.5ant ant-apache-log4j 1.6.5ant ant-commons-logging 1.6.5wsdl4j wsdl4j 1.6.2javax.xml jaxrpc 1.1org.eclipse.jdt.core.compiler ecj 4.6.1junit junit 4.12testTomcat8.0javajavaorg.apache.maven.plugins maven-compiler-plugin 3.5UTF-8${java.version}${java.version}

配置启动类

org.apache.catalina.startup.Bootstrap

默认加载tomcat自带的webapps目录下的资源,也可以配置自己的catalina.home,这时候需要指定启动参数如:

-Dcatalina.home="E:workspaceapache-tomcat-8.5.34-srchome"

修改源码

由于版本太高,这个方法中使用的一些属性

org.apache.jasper.compiler.JDTCompiler#generateClassCompilerOptions.VERSION_9

我没有找到合适的版本,所以把这几行注释掉了

2c0630e992d4377028c4c587eee6fabf.png

由于不能直接分享架构资料,需要的可以私信“555”获取架构资料(或是进群与大牛一起交流)

启动

经过上面的配置已经可以启动了,但是会遇到如下报错:

严重: Error configuring application listener of class [listeners.ContextListener]java.lang.ClassNotFoundException: listeners.ContextListenerat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1344)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1173)at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:542)at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:523)at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4585)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5131)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:714)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133)at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1868)at java.util.concurrent.Executors$RunnableAdapter.call$$$capture(Executors.java:511)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java)at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)at java.util.concurrent.FutureTask.run(FutureTask.java)at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1045)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:429)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1577)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)at java.util.concurrent.FutureTask.run(FutureTask.java)at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.StandardService.startInternal(StandardService.java:522)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.startup.Catalina.start(Catalina.java:637)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:352)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:541)

由于不能直接分享架构资料,需要的可以私信“555”获取架构资料(或是进群与大牛一起交流)

这是在加载webapps目录下的应用时找不到相应的class导致的(也可能是加载路径的问题?)

我在这里是把它们删除了,添加的自己生成的一个war包是没有问题的。

现在就可以在本地访问8080端口访问自己的项目啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值