3

Blobstore API を使用して GAE にファイルをアップロードしようとしています。GAE サーバーをローカルで (dev モードで) 実行すると、次の例外が発生します。

WARNING: /_ah/upload/ag10cmlwc2NoZWR1bGVychsLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YFQw
java.lang.IllegalStateException: Must call one of set*BlobStorage() first.
 at com.google.appengine.api.blobstore.dev.BlobStorageFactory.getBlobStorage(BlobStorageFactory.java:24)
 at com.google.appengine.api.blobstore.dev.UploadBlobServlet.init(UploadBlobServlet.java:88)
 at javax.servlet.GenericServlet.init(GenericServlet.java:215)
 at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
 at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
 at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)

私は GAE 1.3.5 を実行していますが、GAE 1.3.0 (ブロブストアの最初のバージョン) 以降のすべてのバージョンを試しました。私は GAE maven プラグインを使用しています: http://code.google.com/p/maven-gae-plugin/

私のフォームは GWT 2.0.4 で書かれています。現在、フォームは送信を伴う単なるファイル入力フィールドです。

フォームを送信した後、上記の例外を受け取ります。Blobstore Service からアップロード URL を正常に取得できました。

すべてがGAEで正常に動作します。ローカルの開発環境のブロブストアに何も入力されていないことを確認しました (開発管理コンソール経由)。~1Kb の CSV をアップロードしていますが、他のファイル タイプ/サイズも試しましたが成功しませんでした (GAE 製品でも同じファイルが機能します)。

4

5 に答える 5

5

html を生成するページ (サーブレット、jsp などを使用) を呼び出すと、blobstoreService.createUploadUrl("/upload");このページを複数回再利用することはできません。

ファイルをアップロードするたびに、ブラウザでこのページをリロードしてください。

于 2011-05-20T10:59:53.783 に答える
3

この問題は、開発アプリ サーバーの実行時にスタブとテスト jar がクラスパスに含まれていることが原因でした。Maven を使用している場合は、依存関係のスコープを変更するだけです。

<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-testing</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>

Maven を使用していない場合は、これらの jar が WEB-INF/lib またはクラスパスにないことを確認してください。

于 2010-09-27T15:31:41.077 に答える
2
$ mvn clean gae:run -DskipTest 

私のために働く

于 2012-06-19T23:30:14.930 に答える
0

Maven ではなく Eclipse とプラグインを使用している場合:

実行/デバッグ構成を削除します。新しいプロジェクトを作成するには、プロジェクトを右クリックして run/debug As > Web Application を選択します。

于 2012-04-14T10:05:42.750 に答える
0

私は Maven を使用しておらず、Eclipse と GAE プラグインのみを使用しています。また、クラスパスにテスト用の .jar ファイルがありませんでした。Eclipseで実行構成を削除して再起動したところ、機能しました。何が問題なのかわかりませんが、これにより、dev/local モードで実行しているときに問題が修正されました。

于 2011-10-17T01:02:58.347 に答える