今天有个客户必须要用tomcat10做web系统
之前都是用jdk8,tomcat9
首次用了下tomcat10,目前需要注意的是
- jdk必须是11及其以上
- javax的包不在支持,需要Jakarta的包
代码层面,需要修改的内容是 javax.servlet 改成 jakarta.servlet
依赖层面,jstl的包改成:
jakarta.servlet.jsp.jstl-2.0.0.jar
jakarta.servlet.jsp.jstl-api-2.0.0.jar
文件上传的得用:
commons-fileupload-jakarta.jar
更换后,类名也有点相应的变化,我目前遇到的是以下变化,如果用ServletFileUpload 不会报错,但是运行时候会报找不到javax.servlet.http.HttpServletRequest
最新的依赖,fileupload变成了fileupload2
import org.apache.commons.fileupload2.FileItem;
import org.apache.commons.fileupload2.FileItemFactory;
import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
import org.apache.commons.fileupload2.jaksrvlt.JakSrvltFileUpload;
import org.apache.commons.fileupload2.jaksrvlt.JakSrvltRequestContext;
需要替换的类:
// ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
JakSrvltFileUpload servletFileUpload = new JakSrvltFileUpload(fileItemFactory);
看一下包的结构大概就找到了jaksrvlt包内的替代,保留Servlet估计是做兼容的吧