全部產品
Search
文件中心

Alibaba Cloud SDK:通過IDE使用阿里雲Java SDK

更新時間:Jul 01, 2024

本文以在Windows作業系統上,通過IntelliJ IDEA使用阿里雲SDK為例,協助您瞭解如何快速使用阿里雲Java SDK。

前提條件

使用 SDK

使用OpenAPI門戶提供的程式碼範例工程

  1. 進入OpenAPI門戶的API調試頁面,選擇產品和介面。例如我們以調用Elastic Compute Service的DescribeInstanceTypeFamilies介面為例,可在搜尋欄中填入DescribeInstanceTypeFamilies,然後點擊進入API調試頁面。

    image

  2. 在頁面中間的參數配置頁簽,並填寫需要的參數資訊。填寫時請參考右側的文檔頁簽,充分瞭解介面的說明和注意事項(尤其是費用相關資訊),以及各參數的具體含義和使用方法。如DescribeInstanceTypeFamilies介面支援傳入兩個參數,其中RegionId為必填,您可填入cn-hangzhou(表示杭州地區);Generation非必填,您可填入ecs-5(表示系列 V 執行個體規格類型系列),參數詳細取值可在右側文檔中查看。

    image

  3. 在右側的SDK樣本頁面,選擇語言,單擊下載完整工程按鈕,下載SDK完整工程至本地並解壓。

    說明

    完整工程中包含了SDK資訊以及當前OpenAPI的調用demo。

    image

  4. 開啟IntelliJ IDEA,單擊File->Open,選擇解壓後的工程檔案夾,等待Maven自動安裝依賴資訊。

  5. 在調用之前,需要先擷取訪問憑證AccessKey,建議使用RAM使用者的AccessKey。更多資訊,請參見建立RAM使用者的AccessKey

    重要

    擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數

  6. 運行範例程式碼。

    雙擊開啟Sample,點擊右上方運行按鈕運行。

    image

  7. 查看運行結果。在底部控制台按下ctrl+f,搜尋statusCode,如果看到"statusCode":200表示調用成功。

    image

在已有的專案中安裝SDK

  1. 擷取SDK

    訪問SDK中心,選擇您想要使用的SDK的雲產品,這裡以Elastic Compute Service為例。SDK版本選擇 V2.0,語言選擇 Java安裝方式Apache Maven 為例。

    image

  2. 引入SDK

    開啟IntelliJ IDEA中已建立的Maven專案,在pom.xml中建立 <dependencies></dependencies>標籤,在該標籤中複製步驟1中的Apache Maven依賴。

        <dependencies>
            <!--ECS V2.0 SDK -->
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>ecs20140526</artifactId>
                <version>5.1.2</version>
            </dependency>
        </dependencies>

    image

  3. 右鍵專案名稱,選擇Maven->Reload project,下載Maven依賴。

    image

  4. 建立Java類。

    在專案src/main/java目錄下,按右鍵java,選擇 New->Java Class,名稱為Sample。

    image

  5. 初始化雲產品用戶端。

    重要
    1. 初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey

    2. 擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數

    3. endpoint如何設定請參見服務存取點

    import com.aliyun.ecs20140526.Client;
    import com.aliyun.teaopenapi.models.Config;
    
    public class Sample {
        public static void main(String[] args) throws Exception {
            Config config = new Config()
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
            Client client = new Client(config);
        }
    }
  6. 調用OpenAPI

    在調用OpenAPI之前,您需要先瞭解OpenAPI的詳細資料,請查看API文檔

    同時在引入的雲產品Maven依賴包中,雲產品SDK提供了每一個OpenAPI的請求類和響應類,請求類中定義了參數及參數類型,響應類中定義了返回參數結構,避免您在調用OpenAPI時參數名拼字錯誤。

    比如調用describeInstanceTypeFamilies,它的請求類是DescribeInstanceTypeFamiliesRequest,響應類是DescribeInstanceTypeFamiliesResponse。

    說明

    OpenAPI請求類的命名規則:OpenAPI名稱+Request

    OpenAPI響應類的命名規則:OpenAPI名稱+Response

    import com.aliyun.ecs20140526.Client;
    import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesRequest;
    import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesResponse;
    import com.aliyun.teaopenapi.models.Config;
    
    public class Sample {
        public static void main(String[] args) throws Exception {
                Config config = new Config()
                        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
                Client client = new Client(config);
                DescribeInstanceTypeFamiliesRequest describeInstanceTypeFamiliesRequest = new DescribeInstanceTypeFamiliesRequest();
                describeInstanceTypeFamiliesRequest.setRegionId("cn-hangzhou");
                DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest);
        }
    }
    
  7. 處理異常,阿里雲SDK對異常做了統一處理。

    TeaException: 在 SDK 的請求中主要以業務報錯為主的異常,該異常的樣本中提供了三個參數為使用者排查問題提供協助:

    • code: OpenAPI 業務報錯的錯誤碼。

    • message:OpenAPI 業務報錯的錯誤資訊,其中會包含本次請求的 RequestId。

    • data:OpenAPI 報錯後服務端返回的詳細資料

    import com.aliyun.ecs20140526.Client;
    import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesRequest;
    import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesResponse;
    import com.aliyun.tea.TeaException;
    import com.aliyun.teaopenapi.models.Config;
    
    public class Sample {
        public static void main(String[] args) {
            try {
                Config config = new Config()
                        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
                Client client = new Client(config);
                DescribeInstanceTypeFamiliesRequest describeInstanceTypeFamiliesRequest = new DescribeInstanceTypeFamiliesRequest();
                describeInstanceTypeFamiliesRequest.setRegionId("cn-hangzhou");
                DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest);
            } catch (TeaException teaException) {
                // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                // 列印錯誤碼
                System.out.println(teaException.getCode());
                // 列印錯誤資訊,錯誤資訊中包含 RequestId
                System.out.println(teaException.getMessage());
                // 列印服務端返回的具體錯誤內容
                System.out.println(teaException.getData());
            } catch (Exception e) {
                TeaException error = new TeaException(e.getMessage(), e);
                // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                // 錯誤 message
                System.out.println(error.getMessage());
                // 診斷地址
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }
        }
    }
    

常見問題

  • 運行時,提示“java: 錯誤: 不支援發行版本 X”。

    同步選取Ctrl+Alt+Shift+S,進入Project Structure視窗。選擇Modules,在右側Language Level中選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,Language Level選擇“8 - Lambdas, type annotations etc. ”。單擊Apply,單擊OK。

    image

  • 運行時,提示“java: Compilation failed: internal java compiler error”。

    在IntelliJ IDEA功能表列,單擊File->Setting->Build, Execution, Deployment->Compiler->Java Compiler,Project bytecode version和Target bytecode version選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,這兩項選擇 8 即可。單擊Apply,單擊OK。

    image

相關文檔

進階文檔