Сервлет 3.1 — Части — метод getParts() неразрешен

#java #file #servlets #methods #undefined

#java #файл #сервлеты #методы #не определено

Вопрос:

Я пытаюсь использовать getParts() из import javax.servlet.http.Part; Но он говорит мне: «Не удается разрешить метод 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();
    (...)
 

Есть идеи, почему он не может найти этот метод? Я знаю, что он поставляется с сервлетом 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
 

Ответ №1:

Я использую Intellij IDEA, поэтому я получаю библиотеку jar по умолчанию — 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.

Комментарии:

1. @Marcus_Y, я сталкиваюсь с той же проблемой в netbeans. пожалуйста, помогите мне решить. я использую jdk 1.8, и у него также нет метода getPart(). это простой веб-проект, но не веб-проект maven, пожалуйста.