Question

Je suis en train de télécharger un fichier dans GAE en utilisant l'API Blobstore. Je reçois l'exception suivante lors de l'exécution locale du serveur GAE (mode 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)

Je suis en cours d'exécution GAE 1.3.5, mais ont essayé toutes les versions depuis GAE 1.3.0 (première version avec le Blobstore). J'utilise le plugin maven GAE: http://code.google.com/p / maven-plugin-Gae /

Ma forme est écrit dans GWT 2.0.4. À l'heure actuelle, la forme est juste un champ d'entrée de fichier avec une soumission.

Je reçois l'exception ci-dessus après la soumission du formulaire. Je suis en mesure de récupérer avec succès une URL de téléchargement du service Blobstore.

Tout fonctionne bien sur GAE. J'ai vérifié que rien est entré dans le blobstore dans mon env local dev (via la console dev admin). Je suis un ajout CSV qui est ~ 1 Ko, mais ont essayé d'autres types de fichiers / tailles ainsi sans succès (même les fichiers de travail sur prod GAE).

Était-ce utile?

La solution 2

La question a été causée par les souches ayant et en testant des pots inclus dans le classpath lors de l'exécution du serveur d'applications dev. Si vous utilisez Maven, il suffit de changer la portée de la dépendance:

<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>

Si vous n'utilisez pas maven, assurez-vous que ces pots ne sont pas dans votre WEB-INF / lib ou classpath.

Autres conseils

Quand appeler votre page html qui génère (en utilisant servlet, jsp, etc.) et les appels blobstoreService.createUploadUrl("/upload"); vous ne pouvez pas réutiliser cette page plusieurs fois.

Recharger cette page dans un navigateur chaque fois vous souhaitez télécharger le fichier.

$ mvn clean gae:run -DskipTest 

fonctionne pour moi

Je n'utilise Maven, Eclipse juste et les plug-ins GAE. Je aussi ne voyais pas test .jar dans mon classpath. Je viens de supprimer la configuration Exécuter dans Eclipse et remis en marche et cela a fonctionné. Aucune idée de ce qui a mal tourné, mais que ce soit réglé le problème pour moi en cours d'exécution en dev / mode local.

Si vous n'utilisez Maven mais Eclipse avec le plugin:

RETIRER RUN / CONFIGURATION DEBUG. Pour créer un nouveau, cliquez droit sur le projet et l'exécution / débogage sélectionnez Comme> Application Web

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top