【发布时间】:2022-01-11 17:47:18
【问题描述】:
我正在将 Webapps 从 Tomcat 9 迁移到 Tomcat 10 环境。
我正在使用Eclipse IDE。
下面是引发错误的部分代码:
import java.util.List;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
[...]
DiskFileItemFactory diskFileItemFactory = null;
ServletFileUpload servletFileUpload = null;
List<FileItem> fileItemsList = null;
diskFileItemFactory = new DiskFileItemFactory();
servletFileUpload = new ServletFileUpload(diskFileItemFactory);
fileItemsList = (List<FileItem>) servletFileUpload.parseRequest(request);
错误链接到最后一行。
我得到错误:
The project was not built since its build path is incomplete. Cannot find the class file for javax.servlet.http.HttpServletRequest. Fix the build path then try building this project
The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files
作为此迁移的一部分,我必须在 Webapps Java 源代码中将 javax.servlet 替换为 jakarta.servlet,并将 .jars javax.servlet.jsp.jstl-1.2.1.jar 和 javax.servlet.jsp.jstl-api-1.2.1.jar 替换为 jakarta.servlet.jsp.jstl-2.0.0.jar 和 jakarta.servlet.jsp.jstl-api-2.0.0.jar .jars。
你能帮我解决这些错误吗?
====== 编辑 ======
Piotr P. Karwasz 的回答解决了我的问题。
但是,我没有添加似乎对我不起作用的注释,而是在 Webapp web.xml 文件中为相关的 servlet 添加了 <multipart-config> 元素,如下所示:
<servlet>
<description></description>
<display-name>FooServlet</display-name>
<servlet-name>FooServlet</servlet-name>
<servlet-class>com.foo.bar.FooServlet</servlet-class>
<multipart-config>
<location>/tmp</location>
<max-request-size>418018841</max-request-size>
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>FooServlet</servlet-name>
<url-pattern>/do_foo_servlet</url-pattern>
</servlet-mapping>
【问题讨论】:
-
嗨。很抱歉没有早点回答您,但我仍在更正代码(就文件上传而言,它有效)。是的,你的回答解决了我的问题。谢谢。我更新了我的帖子。