我正在尝试使用 Azure Java SDK 在 Java 中实现一段代码,该代码允许我将文件(在我的例子中为 jpg)上传到 Azure 容器。我已经写了这个,但失败了:
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);
我所做的另一种方法是:
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);
这两个根本不起作用,甚至构建客户端也失败。
显示的错误是这两个:
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)
...
我做错了什么?
谢谢!
Azure 存储 Blob SDK 正在尝试确定 Jackson Dataformat XML 的版本,但无法在 jackson-dataformat-xml 中找到 PackageVersion 类。这表明存在一些可能的问题,Jackson Dataformat XML 不是应用程序的一部分,或者 Azure 存储 Blob SDK 无法访问 PackageVersion。
除此之外,您为上传 blob 编写的代码应该可以工作。