2

次の行を使用してもエラーは発生しません

    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)

コンテキスト: Google アプリで Apache commons lib を使用するファイル アップロード アプリケーション。

4

2 に答える 2

4

Commons FileUpload(1.2.1)は、GAEとの半互換性のみです。ストリーミングAPIのみがサポートされていますが、ローカルファイルシステムがGAEによって利用可能になっていないため、従来のAPIはサポートされていません。Stacktaceには、DiskFileItemの使用法があります。これは、基本的にアップロードされたファイルをローカルに書き込み、後で削除します。

GAEでのApacheCommonsFileUploadおよびJavaフレームワークのサポートのセクションを参照してください。

ストリーミングAPIの使用法は次のとおりです。

于 2009-11-17T02:03:33.403 に答える
2

Commons FileUploadライブラリのDiskFileItemクラスは、内部でjava.rmi.server.UIDを使用し、このクラスの使用はGoogleAppsランタイム環境によって禁止されています。DiskFileItemはアップロードされたファイルをサーバーファイルシステムにキャッシュしており、ディスクアクセスはGoogle Appsによって禁止されているため、RMI固有のUIDクラスへの依存関係を削除しても問題は解決しません。

于 2009-11-17T02:04:41.217 に答える