2012-10-13 2 views
2

누구든지 이런 일이 발생 했습니까? 그것은 dev에서 일하고 배포에 실패한 것과 반대입니다.Google App EngineCode가 배포되었지만 개발자 서버가 아닌 경우 작동합니다.

내 웹 앱은 배포시에는 ImageServiceImpl.getServingUrl()을 사용하지만 dev 서버에서는 성공적으로 사용하지 않습니다.

https://developers.google.com/appengine/docs/java/config/appconfig#About_appengine_web_xml는 또한 여기 보았다 : https://developers.google.com/appengine/docs/java/images/overview#Development_Server

나는 배치 된 환경이 내 dev에 환경 구성에없는 무언가가 있다면 보려면 여기를 보였다. 나는 WebP 형식, 특별하다고, 그리고 tif 여야 디코더 플러그인을 가지고 있지 않지만, 그 이후 문제가되지 않습니다

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) 

:

는 여기에 내가 나에게 문제가주는 코드를 실행하면 내 콘솔에서 발생하는 상황 나는 jpeg 이미지만을 다루고 있습니다. 당신이 알다시피, 나는 사용자의 업로드를 수신 (대신 getUploadUrl을 사용하는 낮은 수준의 코드를 사용하고

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(); 

하나의 차이 : 여기

코드의 일부입니다. 배포에 대한 내 데이터 저장소 및 디바이스 내 데이터 저장소 내 dev에 대한 데이터 저장소에 BlobFileIndex 엔티티의 종류를 볼 수 있다는 것입니다.

는 모든 입력 주셔서 감사합니다!

답변

1

From the docs : Java 개발 서버는 ImageIO 프레임 워크를 사용하여 Image 서비스를 시뮬레이션합니다. "I 'm Feeling Lucky"사진 향상 기능은 지원되지 않습니다. WEBP 이미지 형식은 적합한 디코더 플러그인이 설치된 경우에만 지원됩니다. 예를 들어, Java VP8 디코더 플러그인을 사용할 수 있습니다.

최신 1.7.2를 설치 했습니까? 개발 서버에서 getServingUrl로 해결 된 몇 가지 문제가있었습니다.

+0

그래, 1.7.2를 사용하고 있습니다. 웹 페이지 이미지 (jpeg 만)를 사용하지 않으므로 그렇게 될 수 있다고 생각하지 않습니다. 그래도 디코더 플러그인을 설치 하시겠습니까? – user1544470

+0

자바에서 어떻게 작동하는지 모르겠습니다. 하지만 파이썬에서 이와 같은 종류의 문제가 있었고 이미지 lib (PIP)와 최신 dev 서버를 설치해야한다는 것을 알았습니다. jpeg 만 사용하기 때문에 로그 경고를 무시할 수 있습니다. 문제는 불법적 인 주장입니다. 찾았습니다 (getServingUrl illegalargumentexception) : http://stackoverflow.com/questions/6422192/create-image-serving-url-for-new-blob-file – voscausa

+0

+1, & 행복한 1k. :) –