Upload file to Azure blob using Java SDK

Viewed 86

I'm trying to implement a piece of code in Java using Azure Java SDK that allows me to upload a file (jpg, in mycase) to a Azure container. I have written this, but it fails:

String ENDPOINT= "https://myaccount.blob.core.windows.net";

BlobContainerClient blobContainerClient = new BlobContainerClientBuilder().
    endpoint(ENDPOINT).
    credential(CREDENTIAL).
    containerName(CONTAINER_NAME).
    buildClient();

// Get a reference to a local image
BlobClient blobClient = blobContainerClient.getBlobClient(myJpgLocalPath + myJpgFile);

// Set headers
blobClient.setHttpHeaders(new BlobHttpHeaders().setContentType("image/jpeg"));

// Upload the blob
blobClient.uploadFromFile(myJpgLocalPath + myJpgFile, false);

Another approach I've done is this:

BlobServiceClient storageClient = new BlobServiceClientBuilder().
    endpoint(ENDPOINT).
    credential(CREDENTIAL).
    buildClient();

BlobContainerClient blobContainerClient = storageClient.getBlobContainerClient(CONTAINER_NAME); 

// Get a reference to a local image
BlobClient blobClient = blobContainerClient.getBlobClient(myJpgLocalPath + myJpgFile);
    
// Set headers
blobClient.setHttpHeaders(new BlobHttpHeaders().setContentType("image/jpeg"));
    
// Upload the blob
blobClient.uploadFromFile(myJpgLocalPath + myJpgFile, false);

None of these two works at all and fails even building the client.

The errors shown are these two:

java.lang.ClassNotFoundException: com.fasterxml.jackson.dataformat.xml.PackageVersion
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at com.azure.core.implementation.jackson.JacksonVersion.<init>(JacksonVersion.java:46)
        at com.azure.core.implementation.jackson.JacksonVersion.getInstance(JacksonVersion.java:72)
        at com.azure.core.implementation.jackson.ObjectMapperShim.<clinit>(ObjectMapperShim.java:40)
        at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:81)
        at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:59)
        at com.azure.core.util.serializer.JacksonAdapter$SerializerAdapterHolder.<clinit>(JacksonAdapter.java:114)
        at com.azure.core.util.serializer.JacksonAdapter.createDefaultSerializerAdapter(JacksonAdapter.java:123)
        at com.azure.storage.blob.implementation.util.ModelHelper.<clinit>(ModelHelper.java:62)
        at com.azure.storage.blob.BlobUrlParts.parse(BlobUrlParts.java:371)
        at com.azure.storage.blob.BlobContainerClientBuilder.endpoint(BlobContainerClientBuilder.java:181)
...

java.lang.NoClassDefFoundError: Could not initialize class com.azure.storage.blob.implementation.util.ModelHelper
        at com.azure.storage.blob.BlobUrlParts.parse(BlobUrlParts.java:371)
        at com.azure.storage.blob.BlobContainerClientBuilder.endpoint(BlobContainerClientBuilder.java:181)
...

What I am doing bad?

Thanks!

0 Answers
Related