首页 > 解决方案 > 尝试在 azure 中创建新存储桶时出现 java.net.UnknownHostException

问题描述

Exception in thread "main" java.util.NoSuchElementException: An error occurred while enumerating the result, check the original exception for details.
    at com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext(LazySegmentedIterator.java:113)
    at com.test.maven.azureBlob.main(azureBlob.java:47)
Caused by: com.microsoft.azure.storage.StorageException: The server encountered an unknown failure: 
    at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:101)
    at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:199)
    at com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext(LazySegmentedIterator.java:109)
    ... 1 more

以上是尝试从 java 创建存储桶时遇到的异常

以下是代码 public class azureBlob { public static final String storageConnectionString = "DefaultEndpointsProtocol=http;" + "账户名=;" + "账户密钥=";

public static void main(String[] args) throws InvalidKeyException, URISyntaxException, StorageException {
    // TODO Auto-generated method stub
    File sourceFile = null, downloadedFile = null;
    System.out.println("Azure Blob storage quick start sample");

    CloudStorageAccount storageAccount;
    CloudBlobClient blobClient = null;
    CloudBlobContainer container=null;

    storageAccount = CloudStorageAccount.parse(storageConnectionString);
    blobClient = storageAccount.createCloudBlobClient();
    container = blobClient.getContainerReference("quickstartcontainer");

    System.out.println("Creating container: " + container.getName());
    try
    {
    container.createIfNotExists();
    }
    catch (Exception e)
    {
        System.out.println(e.getMessage());
        }

    //Listing contents of container
    for (ListBlobItem blobItem : container.listBlobs()) {
    System.out.println("URI of blob is: " + blobItem.getUri());
}
}

}

标签: javaazurebucket

解决方案


我已经测试了你的代码,它工作正常。

这是我的代码供您参考:

import java.net.URISyntaxException;
import java.security.InvalidKeyException;
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import com.microsoft.azure.storage.blob.ListBlobItem;

public class Main {

    public static final String ConnString="DefaultEndpointsProtocol=https;AccountName=xxxxx;AccountKey=O7xB6ebGq8e86XQSy2vkvSi/x/e9l9xxxxxxxxkly1DsQPYY5dF2JrAVHtBozbJo29ZrrGJA==;EndpointSuffix=core.windows.net";
public static void main(String[] args) {
    // TODO Auto-generated method stub      
    listBlobsOfContainer("mycontainer");
    System.out.println("Success");



}

    public static void listBlobsOfContainer(String containerName) {
        CloudStorageAccount account = null;
        CloudBlobContainer container = null;
        try {
            account = CloudStorageAccount.parse(ConnString);
            CloudBlobClient client = account.createCloudBlobClient();
            container = client.getContainerReference(containerName);
            container.createIfNotExists();
        }catch(Exception ex) {
            ex.printStackTrace();
        }

        for (ListBlobItem blobItem : container.listBlobs()) {
            System.out.println("URI of blob is: " + blobItem.getUri());
        }

    }
}

结果截图:

在此处输入图像描述

请确保使用最新的Java SDK,我使用的Java SDK来自: azure-storage-java


推荐阅读