2012-10-13 33 views
2

任何人都有這種情況發生?這與在dev中工作和在部署中失敗相反。Google App EngineCode在部署時運行,但不在開發服務器中運行

我的web應用程序在部署中成功使用ImagesServiceImpl.getServingUrl(),但在開發服務器中未成功使用。

我看着這裏,看看是否有東西在我的開發環境配置中缺少所部署的環境有:https://developers.google.com/appengine/docs/java/config/appconfig#About_appengine_web_xml

又看了這裏:https://developers.google.com/appengine/docs/java/images/overview#Development_Server

下面是我的控制檯會發生什麼,當我運行的代碼給我找麻煩:

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解碼器插件,不應該因爲一個問題我只處理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

一個區別。我對數據存儲的部署和我的開發數據存儲是我看到BlobFileIndex實體類型的數據存儲爲我的dev。

謝謝你的任何輸入!

回答

1

來自文檔:Java開發服務器使用ImageIO框架來模擬Image服務。不支持「我很幸運」照片增強功能。只有安裝了合適的解碼器插件才能支持WEBP圖像格式。例如,可以使用Java VP8解碼器插件。

你安裝了最新的1.7.2。開發服務器中的getServingUrl存在一些問題。

+0

是的,我使用1.7.2。我從來沒有使用webp圖像(只有jpeg),所以我不認爲這可能是。儘管如何安裝解碼器插件? – user1544470

+0

我不知道這在Java中如何工作。但是我在Python中遇到了同樣的問題,並發現我必須安裝一個圖像庫(PIP)和最新的開發服務器。 因爲您只使用jpeg,所以您可以忽略日誌警告。所以你的問題是與非法的爭論。我發現(getServingUrl illegalargumentexception):http://stackoverflow.com/questions/6422192/create-image-serving-url-for-new-blob-file – voscausa

+0

+1,&happy 1k。 :) –

相關問題