解决JDK由8升级至17导致的文件上传代码报错问题
` 由于项目升级,需要升级到17版本,因此遇到了不少BUG问题,这是其中之一在此做记录保存。
一、问题阐述
由于 JDK升级 避免Oracle 版权问题,Apache Commons FileUpload的包名由原先的 javax 变成了Jakarta,因此,需要使用新包做替换。
二、步骤
1.maven
将原先的commons-fileupload的 commons-fileupload包替换为新的 org.apache.commons的commons-fileupload2-jakarta包。
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
--------------------------------------------------
替换为:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-fileupload2-jakarta</artifactId>
<version>2.0.0-M1</version>
</dependency>
2.代码调整
然后需将代码的之前报错的找不到的类 ServletFileUpload 替换为 JakartaServletFileUpload 其他类也在前面加入Jakarta前缀。
-----------略------------------------
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
ServletRequest requestWrapper = null;
if (request instanceof HttpServletRequest) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestURI = httpServletRequest.getRequestURI();
if (!pathMatcher(requestURI)) {
if (JakartaServletFileUpload.isMultipartContent(httpServletRequest)) {
} else {
requestWrapper = new RequestWrapper(httpServletRequest);
}
}
}
if (requestWrapper == null) {
filterChain.doFilter(request, response);
} else {
filterChain.doFilter(requestWrapper, response);
}
}
-----------略------------------------
自此,问题得以解决。
总结
由于JDK升级的问题有很多,本文仅对此问题进行解答记录。