كيفية حل هذا java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream؟

أستخدم الكود التالي لتحميل ملف إلى tomcat5.5 وهو يعطيني الاستثناء التالي

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

هل يمكنك مساعدتي في العثور عليها؟

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * Servlet implementation class FileUploadServlet
 */
public class FileUploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FileUploadServlet() {
        super();
       //TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    @SuppressWarnings("rawtypes")
    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 {
       //TODO Auto-generated method stub
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        System.out.println("Status : "+isMultipart);
        if (isMultipart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);

            try {
                List items = upload.parseRequest(request);
                Iterator iterator = items.iterator();
                while (iterator.hasNext()) {
                    FileItem item = (FileItem) iterator.next();

                    if (!item.isFormField()) {
                        String fileName = item.getName();

                        String root = getServletContext().getRealPath("/");
                        File path = new File(root + "/uploads");
                        if (!path.exists()) {
                            boolean status = path.mkdirs();
                        }

                        File uploadedFile = new File(path + "/" + fileName);
                        System.out.println(uploadedFile.getAbsolutePath());
                        item.write(uploadedFile);
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        response.sendRedirect("upload.jsp");
    }

}

this is the jar i use commons-fileupload-1.2.2.jar

0

6 إجابة

قم بتنزيل PrimeFaces 4.0 . لقد حلت مشكلتي على الفور. أنا أستخدم Glassfish 4.0

0
وأضاف

تشير رسالة الاستثناء المحددة إلى أن الفئة المذكورة مفقودة في مسار classpath. مثل org.apache.commons.io تلميحات اسم الحزمة ، فإن الفئة المذكورة هي جزء من http://commons.apache.org/io project.

وبالفعل ، يحتوي برنامج FileUpload العام على IO كإحدى التبعية . تحتاج إلى تنزيل وإفلات commons-io.jar في /WEB-INF/lib أيضًا.

أنظر أيضا:

0
وأضاف
شكرا ساعدني في حل مشكلتي
وأضاف المؤلف SAR, مصدر

استخدام التبعية مخضرم

 
  org.apache.commons
  commons-io 
  1.3.2 
 

أو تحميل commons-io.1.3.2.jar إلى مجلد lib الخاص بك

0
وأضاف
انها في الواقع ليست واردة في النسخة المشتركة 1.3.1.المحاولة 2.4 أو أعلى. في rein maven ليس تحت 'org.apache' بعد الآن ولكن مباشرة تحت 'commons-io: commons-io'
وأضاف المؤلف tObi, مصدر

فقط ضع كل apache comons jar و file jar upload في lib folder of tomcat

0
وأضاف

حل

بشكل افتراضي ، تستخدم Struts برنامج Apache “commons-io.jar” لعملية تحميل الملفات الخاصة به. لإصلاحه ، يجب عليك تضمين هذه المكتبة في مجلد مكتبة التبعية الخاصة بالمشروع.

  1. احصل بشكل مباشر

Get “commons-io.jar” from official website – http://commons.apache.org/io/

  1. Get From Maven

الطريقة المفضلة هي الحصول على "commons-io.jar" من مستودع Maven

الملف: pom.xml

  
    commons-io
      commons-io
    1.4
  
0
وأضاف

إذا كنت تتلقى هذا الخطأ في حاوية WebSphere ، فتأكد من تعيين سياسة تحميل فئة Apps بشكل صحيح. اضطررت إلى تغيير المنجم من الوضع الافتراضي إلى "الأصل الأخير" وكذلك "محمل الطبقة الواحدة للتطبيق" لسياسة WAR. هذا لأنه في حالتي تم تجميع commons-io * .jar مع في التطبيق ، لذلك كان لا بد من تحميلها أولاً.

0
وأضاف
حتى إذا لم يجيب على السؤال ، أجاب على سؤالي وجوجل جلبت لي هنا. إذا شكرا :)
وأضاف المؤلف Bertram Nudelbach, مصدر