3

我正尝试使用Blobstore API在GAE中上传文件。GAE java.lang.IllegalStateException:必须先调用set * BlobStorage()中的一个

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(第一版与Blob存储区)的所有版本:在运行GAE服务器时在本地(开发模式),我得到了以下异常。我正在使用GAE maven插件:http://code.google.com/p/maven-gae-plugin/

我的表单是用GWT 2.0.4编写的。目前,该表单只是一个带有提交的文件输入字段。

我在提交表单后收到上述异常。我能够成功地从Blobstore服务中检索上传URL。

一切工作正常GAE。我已经证实,我的本地开发环境(通过开发人员管理控制台)中没有任何内容输入到Blobstore中。我正在上传大约1Kb的CSV,但也试过其他文件类型/大小,但没有成功(相同的文件在GAE产品上工作)。

回答

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> 

,确保这些罐子是不是在你的WEB-INF/lib或类路径:如果您在使用maven,简单地改变依赖的范围。

5

当调用生成html的页面(使用servlet,jsp等)并调用blobstoreService.createUploadUrl("/upload");时,您无法多次重复使用此页面。

在浏览器中重新加载本页面每次要上传文件。

0

我没有使用Maven,只是Eclipse和GAE插件。我也没有在我的类路径中看到test .jar文件。我刚刚删除了Eclipse中的运行配置,并重新启动并运行。不知道出了什么问题,但是这样解决了我在开发/本地模式下运行的问题。

+0

嗨达斯汀,能否请你详细说明究竟你在运行配置删除?我面临同样的问题。 – underdog 2014-04-14 11:54:10

+0

我发布了一段时间,但我相信我只是删除了Eclipse中的整个运行配置(Run-> Run Configurations ...-> Google App Engine,然后选择了配置并单击删除(红色的'X' ))。 – DustinB 2014-04-21 13:43:32

0

如果不使用maven但是Eclipse插件有:

删除运行/调试配置。要创建项目并选择运行/调试方式>网络应用

+0

只有它看起来好像他在问maven,所以... – 2012-10-30 04:07:28

2
$ mvn clean gae:run -DskipTest 

作品对我新,只需右键单击

+0

也适用于我。你能详细说明为什么吗? – 2016-05-02 23:51:16

相关问题