代码之家  ›  专栏  ›  技术社区  ›  Brad

GAE java.lang.IllegalStateException:必须首先调用set*BlobStorage()之一

  •  3
  • Brad  · 技术社区  · 14 年前

    我正在尝试使用blobstoreapi在GAE中上传一个文件。在本地(开发模式)运行GAE服务器时,出现以下异常:

    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)
    

    http://code.google.com/p/maven-gae-plugin/

    我的表单是用gwt2.0.4编写的。目前,表单只是一个带有submit的文件输入字段。

    我在提交表格后收到上述例外情况。我能够成功地从Blobstore服务检索上载URL。

    在GAE上一切正常。我已经验证了没有任何内容输入到本地dev env中的blobstore中(通过dev管理控制台)。我上传的CSV是~1Kb,但也尝试了其他文件类型/大小,但没有成功(同样的文件工作在GAE prod上)。

    5 回复  |  直到 14 年前
        1
  •  5
  •   topchef    13 年前

    blobstoreService.createUploadUrl("/upload"); 您不能多次重复使用此页。

    在浏览器中重新加载此页

        2
  •  3
  •   Brad    14 年前

    这个问题是由运行dev app server时在类路径中包含存根和测试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或类路径中。

        3
  •  2
  •   Taryn Hemanshu    12 年前
    $ mvn clean gae:run -DskipTest 
    

    对我有用

        4
  •  0
  •   DustinB    13 年前

    我使用的不是Maven,而是Eclipse和GAE插件。我也没看到什么 测试

        5
  •  0
  •   Carl Emmoth    12 年前

    删除运行/调试配置。要创建新的,只需右键单击project并选择run/debug As>Web应用程序