0

During image upload, I'm using below method getBlobKey to get BlobKey for image and saving it's detail in database.

private BlobKey getBlobKey(byte[] data, String fileName) {
        System.out.println("Inside getBlobKey....");
        GcsService gcsService = null;
        GcsFilename gcsFilename = null;
        String bucket = "nirantGallery";

        fileName = fileName + "_" + UUID.randomUUID().toString();

        try {
            gcsService = GcsServiceFactory.createGcsService();
            gcsFilename = new GcsFilename(bucket, fileName);
            GcsFileOptions.Builder options_builder = new GcsFileOptions.Builder();
            options_builder = options_builder.mimeType("image/jpeg");

            GcsFileOptions options = options_builder.build();
            GcsOutputChannel output = GcsServiceFactory.createGcsService().createOrReplace(gcsFilename, options);
            output.write(ByteBuffer.wrap(data));
            output.close();

            // Get serving url
            String gs_blob_key = "/gs/" + bucket + "/" + fileName;
            BlobKey blob_key = BlobstoreServiceFactory.getBlobstoreService().createGsBlobKey(gs_blob_key);
            ServingUrlOptions serving_options = ServingUrlOptions.Builder.withBlobKey(blob_key);
            String serving_url = ImagesServiceFactory.getImagesService().getServingUrl(serving_options);
            System.out.println("Serving URL: " + serving_url);

            return blob_key;
        } catch (Exception e) {
            System.out.println("Inside exception....");
            e.printStackTrace();
        } finally {
            gcsService = null;
        }
        return null;
    }

The problem is when I'm running this in local system, it works and gives me localhost URL like

Serving URL: http://127.0.0.1:8888/_ah/img/encoded_gs_key:L2dzL25pcmFudEdhbGxlcnkvaW1hZ2VfMF9kNjlmOGFjMS05ZTUzLTRiNzUtOTI1ZC1hYzU0ZWQzNzJkNDk

But it is not working when I deploy and run, checked log in server found below details.

Error for /nirat-admin-portal/addGallery
java.lang.NoClassDefFoundError: com/google/api/client/extensions/appengine/http/UrlFetchTransport
    at com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory.<clinit>(OauthRawGcsServiceFactory.java:31)
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:59)
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:44)
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:40)
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:75)
    at com.sparks.nirant.datastore.DataStoreService.getBlobKey(DataStoreService.java:207)
    at com.sparks.nirant.datastore.DataStoreService.saveImageMapToDataStore(DataStoreService.java:183)
    at com.sparks.nirant.serviceImpl.AdminServiceImpl.addGallery(AdminServiceImpl.java:121)
    at com.sparks.nirant.server.AdminController.doPost(AdminController.java:297)

please assist.

Santosh Giri
  • 109
  • 12
  • Possible duplicate of [NoClassDefFoundError: com/google/api/client/extensions/appengine/http/UrlFetchTransport?](http://stackoverflow.com/questions/24965261/noclassdeffounderror-com-google-api-client-extensions-appengine-http-urlfetchtr) – Gueorgui Obregon Mar 21 '16 at 17:00
  • I've tried already the above link but that didn't help me, like I said it worked in local but not in production – Santosh Giri Mar 21 '16 at 17:38

0 Answers0