2014-12-26 3 views
2

localhost에서 runnning하는 서버에 파일을 업로드하려고 할 때 java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream이 표시됩니다. 나는 이미 WEB-INF/lib 폴더에 평민 - 파일 업로드-1.2.2.jar 추가 한java.lang.NoClassDefFoundError : org/apache/commons/io/output/DeferredFileOutputStream

@WebServlet("/UploadServlet") 
public class UploadServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

private String UPLOAD_DIRECTORY = "~/EclipseProjects/DocSearch/uploads"; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public UploadServlet() { 
    super(); 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    if(ServletFileUpload.isMultipartContent(request)) { 
     try { 
      List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
      for(FileItem item: multiparts) { 
       if(!item.isFormField()) { 
        String name = new File(item.getName()).getName(); 
        item.write(new File(UPLOAD_DIRECTORY + File.separator + name)); 
       } 
      } 
      request.setAttribute("message", "File uploaded successfully"); 
     } catch (Exception ex) { 
      request.setAttribute("message", "File upload failed due to: " + ex); 
     } 
    } else { 
     request.setAttribute("message", "Sorry this servlet only handles file upload requests"); 
    } 
    request.getRequestDispatcher("/result.jsp").forward(request, response); 
} 

} 

: 이것은 내가 사용하고있는 서블릿이다. 새 서버를 만들고 프로젝트를 실행하려고 시도했지만 다른 소스에서 jar 파일을 다시 다운로드하려고했지만 그 중 아무 것도 내 문제를 해결하지 못하는 것 같습니다.

참고 :

이미 겪었

:

,

답변

1

을 프로젝트 종속성 라이브러리 폴더에 포함시켜야합니다.

공식 웹 사이트에서 commons-fileupload.jar 받기 - http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi 또는 받는다는 웹 사이트를 : http://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.3.1

당신이 받는다는 귀하의 pom.xml이 종속성을 추가 사용하는 경우 :이 특정에 대한

<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.3.1</version> 
</dependency> 
불행하게도
+0

내가 사용하지 않은 받는다는 빌드 프로젝트하지만 프로젝트 등록 정보에서 Java 빌드 경로에 병을 추가하려고했습니다. – shyam

+0

@shyam appache 웹 사이트에서 jar를 다운로드하여 프로젝트 빌드 pth에 추가하십시오. –

+0

예. 그것은 트릭을했다. 내가 준 링크를 편집하면 답을 받아 들일 것입니다. (commons-fileupload는 commons-io가 아닙니다.) 이전의 항아리가 왜 효과가 없었던 지에 대한 호기심. 실제로 maven central에서 다운로드했습니다. – shyam

관련 문제