Following https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-java?tabs=powershell get this error:
Caused by: java.lang.IllegalStateException: A request was made to load the default HttpClient provider but one could not be found on the classpath. If you are using a dependency manager, consider including a dependency on azure-core-http-netty or azure-core-http-okhttp. Depending on your existing dependencies, you have the choice of Netty or OkHttp implementations. Additionally, refer to https://aka.ms/azsdk/java/docs/custom-httpclient to learn about writing your own implementation. at com.azure.core.implementation.http.HttpClientProviders.createInstance(HttpClientProviders.java:37) at com.azure.core.http.HttpClient.createDefault(HttpClient.java:27) at com.azure.core.http.HttpPipelineBuilder.build(HttpPipelineBuilder.java:60) at com.azure.storage.blob.implementation.util.BuilderHelper.buildPipeline(BuilderHelper.java:110) at com.azure.storage.blob.BlobServiceClientBuilder.buildAsyncClient(BlobServiceClientBuilder.java:107) at com.azure.storage.blob.BlobServiceClientBuilder.buildClient(BlobServiceClientBuilder.java:84)
Advertisement
Answer
The error will occur when failing to find HttpClient. It seems not related to the code. Try to check if you follow the steps in the documentation.
I try the following code in App.java and it works well.
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey); BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().endpoint(endpoint).credential(credential).buildClient();
If deleting the credential()
, it will return this error: ResourceNotFound The specified resource does not exist.
Access public blob without credential: