【问题标题】:java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream [duplicate]java.lang.NoClassDefFoundError:org/apache/commons/io/output/DeferredFileOutputStream [重复]
【发布时间】:2014-12-26 08:20:36
【问题描述】:

当我试图将文件上传到在 localhost 上运行的服务器时,我收到了 java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream。这是我正在使用的 servlet:

@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);
}

}

我已经将 commons-fileupload-1.2.2.jar 添加到 WEB-INF/lib 文件夹中。我尝试创建一个新服务器并在其上运行项目,尝试从不同来源重新下载 jar 文件,但似乎都没有解决我的问题。

注意:

我已经通过了:

【问题讨论】:

    标签: java servlets file-upload apache-commons


    【解决方案1】:

    您必须将commons-fileupload.jar 包含到您的项目依赖库文件夹中。

    从官方网站获取commons-fileupload.jar - http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi 或从maven 网站获取:http://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.3.1

    如果您使用 maven,请将此依赖项添加到您的 pom.xml:

     <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    

    【讨论】:

    • 不幸的是,我没有为这个特定项目使用 maven 构建,但我尝试在项目属性的 java 构建路径中添加 jar。
    • @shyam 从 appache 网站下载 jar 并将其添加到您的项目构建 pth 中。
    • 是的。那成功了。如果您编辑掉您提供的链接,我会接受您的回答。 (这是 commons-fileupload 不是 commons-io)。仍然很好奇为什么以前的罐子不起作用。我实际上是从 maven Central 下载的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多