在自己下载Tomcat服务器时看到了Tomcat上这样一段话
引起了我的好奇心,到底是什么样的变化让基于Tomcat9开发的应用程序无法在Tomcat10上运行。在网络上粗略搜索之后,搜索出来这样的结果:Tomcat中javax.servlet 换成了 jaraka.servlet。那么先来验证这种说法对不对吧。
首先下载Tmocat 10和Tomcat 9,我下载的分别是是10.0.20和9.0.62这两个版本。
要找到javax.servlet和jaraka.servlet,就需要知道Tomcat每个文件时干什么的。Tomcat共有七个包,分别是bin、conf、lib、logs、temp、webapps、work,其中lib文件夹中存放的就是Tomcat在运行时所需要的jar包,所以在lib中才能找到servlet对应的jar包。然后分别进行解压。解压完成后就会发现,Tomcat10解压后的包名为jaraka,而Tomcat9解压后的包名为javax。如图:
这样也就可以证实 Tomcat中javax.servlet 确实被换成了 jaraka.servlet。那么这样的影响又是如何使得基于Tomcat9及之前版本开发的应用程序在Tomcat10上无法正常运行呢?那就要了解servlet这个包的意义了。简单来说,就是所有的webapp都需要遵守servlet的一套标准,如果不遵守就会造成所开发出来的webapp无法运行或者无法迁移至其他的服务器上。所以servlet包名的更改会导致之前所有引用到javax.servlet的地方都需要更改成jakarta.servlet,所以Tomcat9及之前版本开发的应用程序无法在Tomcat10上正常运行。
如对笔者所写内容有任何建议和意见还望指出。