我试图从导入javax.servlet.http.Part中使用getParts(); 但它告诉我'无法解决方法'getParts()'
package connec;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.LinkedList;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.entJa.sd.FileMeta;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
(...)
public class MultipartRequestHandler {
public static List<FileMeta> uploadByJavaServletAPI(HttpServletRequest request) throws IOException, ServletException {
List<FileMeta> files = new LinkedList<FileMeta>();
Collection<Part> parts = request.getParts();
(...)
知道为什么它找不到这种方法吗?我知道它带有servlet 3.0,但我使用的是3.1,甚至尝试下载4.0(未完成的版本)。
Error:(29, 41) java: cannot find symbol
symbol: method getParts()
location: variable request of type javax.servlet.http.HttpServletRequest
答案 0 :(得分:1)
我使用Intellij IDEA,因此我获得了默认的jar lib - 包含了JavaEE-API-5。我下载了javaee-api-7.0.jar(和Maven一起),现在它正在工作!
确切地说,发生的事情是:Java EE 5包含Servlet API 2.5,它没有getParts()方法,因为它只在Servlet API 3.0中添加 - 另一方面Java EE 7包括Servlet API 3.1。