我正在將 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為.jars和.jars 。jakarta.servletjavax.servlet.jsp.jstl-1.2.1.jarjavax.servlet.jsp.jstl-api-1.2.1.jarjakarta.servlet.jsp.jstl-2.0.0.jarjakarta.servlet.jsp.jstl-api-2.0.0.jar
你能幫我解決這些錯誤嗎?
====== 編輯 ======
Piotr P. Karwasz 的回答解決了我的問題。
但是,我沒有添加似乎對我不起作用的注釋,而是在 Webappweb.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>
uj5u.com熱心網友回復:
該commons-fileupload庫不是而且可能永遠不會與 Servlet 5.0 兼容。從 Servlet 3.0 開始,標準中包含了類似的功能(請參閱第 3.2 節)。
要將代碼遷移到 Tomcat 10,您需要:
commons-fileupload從您的依賴項中洗掉,@MultipartConfig用 注釋您的servlet將呼叫替換
ServletFileUpload#parseRequest為HttpServletRequest#getParts:final Collection<Parts> fileItemsList = request.getParts;因為
FileItem和Part具有幾乎相同的方法,所以在其余代碼中只需要進行微小的更改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418732.html
標籤:
