title: java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class
body: <p>I developing a web application using GWT where i am trying to upload a file . My servlet is working fine.</p>
  
  <p>but when i use DiskFileItemFactory() it gives me error.</p>
  
  <p>if some one can correct my code or tell what is missing in  code.</p>
  
  <pre><code> protected void doPost(HttpServletRequest request, 
              HttpServletResponse response) 
                      throws ServletException, IOException { 
  
           response.setContentType("text/plain"); 
          FileItem uploadItem = getFileItem(request); 
          if (uploadItem == null) { 
            response.getWriter().write("NO-SCRIPT-DATA"); 
            return; 
          } 
          byte[] fileContents = uploadItem.get(); 
          //TODO: add code to process file contents here. We will just print 
  
                      response.getWriter().write(new String(fileContents)); 
  }
  
  private FileItem getFileItem(HttpServletRequest request) {
      // TODO Auto-generated method stub
      FileItemFactory factory = new DiskFileItemFactory(); 
      ServletFileUpload upload = new ServletFileUpload(factory); 
      try { 
        List items = upload.parseRequest(request); 
        Iterator it = items.iterator(); 
        while (it.hasNext()) { 
          FileItem item = (FileItem) it.next(); 
          if (!item.isFormField() 
              &amp;&amp; "uploadForm".equals(item.getFieldName())) { 
            return item; 
          } 
        } 
      } catch (FileUploadException e) { 
        return null; 
      } 
      return null;
  } 
  </code></pre>
  
  <p>ERROR</p>
  
  <pre><code> java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class. Please see the Google  App Engine developer's guide for more details.
  at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
  at org.apache.commons.fileupload.disk.DiskFileItem.&lt;clinit&gt;(DiskFileItem.java:109)
  at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
  at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
  at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
  at com.server.FileUpload.getFileItem(FileUpload.java:101)
  at com.server.FileUpload.doPost(FileUpload.java:48)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
  </code></pre>
  
  <p>Edited: Working Code</p>
  
  <pre><code>    try {
              ServletFileUpload upload = new ServletFileUpload();
              response.setContentType("text/plain"); 
  
  
              FileItemIterator iterator = upload.getItemIterator(request);
  
              while (iterator.hasNext()) {
                  FileItemStream item = iterator.next();
  
                  InputStream stream = item.openStream();
  
                  if (item.isFormField()) {
                      log.warning("Got a form field: " + item.getFieldName()  + " " +item);
  
  
  
                  } else{
                      log.warning("Got an uploaded file: " + item.getFieldName() +
                                ", name = " + item.getName());
                      int len;
                      byte[] buffer = new byte[8192];
                      while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
  
                        response.getOutputStream().write(buffer, 0, len);
  
                      }
  
                  }
  
              }
      } catch (FileUploadException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  </code></pre>