Google App EngineCode работает при развертывании, но не на сервере разработки

У кого-нибудь когда-нибудь такое случалось? Это противоположность работы в dev и неудачи в развертывании.

Мое веб-приложение успешно использует ImagesServiceImpl.getServingUrl() при развертывании, но не на сервере разработки.

Я посмотрел здесь, чтобы увидеть, не было ли чего-то не хватает в конфигурации моей среды разработки, которую имеет развернутая среда: https://developers.google.com/appengine/docs/java/config/appconfig

Также смотрите здесь: https://developers.google.com/appengine/docs/java/images/overview.

Вот что происходит в моей консоли, когда я запускаю код, доставляющий мне проблемы:

Oct 13, 2012 8:40:33 AM com.google.appengine.api.images.dev.LocalImagesService init
WARNING: No image reader found for format "ico". An ImageIO plugin must be installed to use this format with the DevAppServer.
Oct 13, 2012 8:40:33 AM com.google.appengine.api.images.dev.LocalImagesService init
WARNING: No image reader found for format "tif". An ImageIO plugin must be installed to use this format with the DevAppServer.
Oct 13, 2012 8:40:33 AM com.google.appengine.api.images.dev.LocalImagesService init
WARNING: No image reader found for format "webp". An ImageIO plugin must be installed to use this format with the DevAppServer.
Oct 13, 2012 8:40:33 AM com.google.appengine.api.images.dev.LocalImagesService init
WARNING: No image writer found for format "webp". An ImageIO plugin must be installed to use this format with the DevAppServer.
Oct 13, 2012 8:40:34 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /upload
java.lang.IllegalArgumentException: Failed to read image
    at com.google.appengine.api.images.ImagesServiceImpl.getServingUrl(ImagesServiceImpl.java:282)

Хотя у меня нет плагина для webp, ico и tif decoder, это не должно быть проблемой, поскольку я работаю ТОЛЬКО с изображениями в формате jpeg.

Вот часть кода:

    FileService fileService = FileServiceFactory.getFileService();
    AppEngineFile newBlob = fileService.createNewBlobFile("image/jpeg");

    // Create a new Blob file with mime-type "image/jpeg"

    byte[] buffer = new byte[4096]; // 4MB
    boolean lock = true;
    FileWriteChannel writeChannel = fileService.openWriteChannel(newBlob, lock);
    // increase the buffer size as you are reading from the 
    // input stream. Read the input stream into buffer
    for (int n; (n = stream.read(buffer)) != -1; ){ 
        writeChannel.write(ByteBuffer.wrap(buffer));
    } 
        stream.close();
        writeChannel.closeFinally();


BlobKey blobKey = fileService.getBlobKey(newBlob);
ImagesService imagesService = ImagesServiceFactory.getImagesService();

Как вы можете сказать, я использую код более низкого уровня для получения загрузки от пользователя (вместо использования getUploadUrl.

Одно из различий между моим хранилищем данных при развертывании и моим хранилищем данных в dev заключается в том, что я вижу вид сущности BlobFileIndex в хранилище данных для моего dev.

Спасибо за любой вклад!

1 ответ

Из документов: Сервер разработки Java использует инфраструктуру ImageIO для имитации службы изображений. Функция улучшения фото "Мне повезет" не поддерживается. Формат изображения WEBP поддерживается только в том случае, если установлен подходящий плагин декодера. Например, можно использовать плагин декодера Java VP8.

Установили ли вы последнюю версию 1.7.2. Были некоторые проблемы, исправленные с getServingUrl на сервере разработки.

Другие вопросы по тегам