2009-11-17 46 views
1

我不,當我使用下面的行RMI錯誤

FileItemIterator it = servletFileUpload.getItemIterator(request); 

我明白了,當我使用下面的行

List fileItemsList = servletFileUpload.parseRequest(request); 

他們如何不同,如何爲RMI相關得到的錯誤到servletFileUpload.parseRequest(request);?

錯誤: 產生的原因:

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.(DiskFileItem.java:103) 
    at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196) 
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358) 
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) 
    at morefile.CopyOfUploadApp.doPost(CopyOfUploadApp.java:147) 

語境: 使用的谷歌應用程序的Apache公地LIB文件上傳應用程序。

回答

3

Commons FileUpload(1.2.1)僅與GAE半兼容。 GAE不支持流API,但傳統API不支持本地文件系統。在堆棧中,我看到DiskFileItem的用法,它基本上將本地上載的文件寫入並稍後刪除。

見下的Apache共享文件上傳的部分在GAE and support for Java frameworks

這裏的streaming API usage.

+0

thx thimmaya,tht正是我所期待的 – dhaval 2009-11-17 15:43:42

+1

第一個鏈接並沒有告訴任何事情。它看起來已經死了 – 2012-08-04 14:32:51

2

從通用FileUpload庫DiskFileItem類使用java.rmi.server.UID中的內部和這個類的使用受禁Google Apps運行時環境。由於DiskFileItem將上傳的文件緩存在服務器文件系統上,並且Google Apps嚴禁磁盤訪問,因此刪除對RMI特定UID類的依賴關係並不能解決您的問題。