本文以Windows作業系統和IntelliJ IDEA軟體為例,介紹如何安裝無影雲電腦企業版的雲電腦管控Java SDK。
前提條件
已安裝JDK。如果還未安裝,請參見在Windows安裝JDK。
已安裝IntelliJ IDEA。如果還未安裝,請參見在Windows搭建Java開發環境。
操作步驟
使用OpenAPI門戶提供的程式碼範例工程
-
開啟查詢辦公網路的詳細資料文檔,並單擊右上方的調試。
-
在OpenAPI門戶頁面上,根據提示登入您的阿里雲帳號。
填寫相關輸入參數後,單擊發起調用,即可看到調用結果。
調試通過後,如需擷取範例程式碼,請在右側面板上單擊SDK樣本頁簽,然後選擇一種語言,並單擊下載完整工程。
說明完整工程中包含SDK資訊和當前OpenAPI的調用demo。
開啟IntelliJ IDEA,在頂部功能表列中選擇File>Open,並開啟解壓後的樣本工程檔案夾,等待Maven自動安裝相關依賴。
在調用之前,需要先擷取訪問憑證AccessKey,建議使用RAM使用者的AccessKey。更多資訊,請參見建立AccessKey。
重要擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數。
雙擊開啟Sample.java,單擊右上方的按鈕運行範例程式碼。
查看運行結果。在底部的日誌視窗中按下
Ctrl+F並搜尋statusCode,如果看到"statusCode":200則表示調用成功。
在已有專案中安裝SDK
擷取SDK。
開啟無影雲電腦企業版的雲電腦管控SDK安裝頁面,並擷取您要使用的安裝方式。本文以Apache Maven方式為例。
引入SDK。
開啟IntelliJ IDEA中已建立的Maven專案,在pom.xml中插入
<dependencies></dependencies>標記對,並在該標記對內部插入上一步擷取的Apache Maven依賴。<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-ecd20200930</artifactId> <version>4.0.21</version> </dependency> </dependencies>下載依賴。
按右鍵專案名稱,在快顯功能表中選擇Maven>Reload project來下載Maven依賴。
建立Java類。
按右鍵
src/main/java目錄並選擇New>Java Class,輸入名稱Sample,然後按斷行符號。初始化雲產品用戶端。
重要初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey。
擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數。
endpoint的詳細資料請參見服務存取點。
import com.aliyun.ecd20200930.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 = "ecd.cn-shanghai.aliyuncs.com"; Client client = new Client(config); } }調用OpenAPI。
在調用OpenAPI之前,您需要先瞭解OpenAPI的詳細資料。同時在引入的雲產品Maven依賴包中,雲產品SDK提供了每一個OpenAPI的請求類和響應類,請求類中定義了參數及參數類型,響應類中定義了返回參數結構,避免您在調用OpenAPI時參數名拼字錯誤。
說明OpenAPI請求類的命名規則:OpenAPI名稱+Request。例如:DescribeOfficeSitesRequest。
OpenAPI響應類的命名規則:OpenAPI名稱+Response。例如:DescribeOfficeSitesResponse。
import com.aliyun.ecd20200930.Client; import com.aliyun.ecd20200930.models.DescribeOfficeSitesRequest; import com.aliyun.ecd20200930.models.DescribeOfficeSitesResponse; 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 = "ecd.cn-shanghai.aliyuncs.com"; Client client = new Client(config); DescribeOfficeSitesRequest describeOfficeSitesRequest = new DescribeOfficeSitesRequest() .setRegionId("cn-shanghai"); DescribeOfficeSitesResponse describeOfficeSitesResponse = client.describeOfficeSites(describeOfficeSitesRequest); } }處理異常。
阿里雲SDK對異常做了統一處理。
TeaException:在 SDK 的請求中主要以業務報錯為主的異常,該異常的樣本中提供了以下參數來協助您排查問題:
message:OpenAPI 業務報錯的錯誤資訊,其中會包含本次請求的 RequestId。
data:OpenAPI 報錯後服務端返回的詳細資料。
常見問題
問題1:運行時,提示“java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because the return value of "com.aliyun.tea.TeaException.getData()" is null at ...”。
問題原因:可能是因為您沒有正確地設定阿里雲的存取金鑰(AccessKey)。
錯誤樣本:
在代碼中,AccessKey 以明文形式直接傳入 System.getenv() 方法,導致未正確配置AccessKey引發報錯。
Config config = new Config()
// System.getenv()表示通過環境變數擷取Access Key ID和Access Key Secret
// 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("<YOUR_ACCESS_KEY_ID>")) // 明文ACCESS_KEY_ID
// 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("<YOUR_ACCESS_KEY_SECRET>")); // 明文ACCESS_KEY_SECRET正確樣本:
在代碼中,將AccessKey 設定為環境變數,隨後通過 System.getenv() 方法從環境變數中擷取 AccessKey。
Config config = new Config()
// System.getenv()表示通過環境變數擷取Access Key ID和Access Key Secret
// 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));建議做法:
切勿直接在代碼中明文寫入 AccessKey 的值。該寫法存在安全隱患。
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")和System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),表示是從環境變數中擷取ALIBABA_CLOUD_ACCESS_KEY_ID及ALIBABA_CLOUD_ACCESS_KEY_SECRET的值。
檢查您的環境變數中是否配置有ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
在終端(Linux/macOS)或單擊開始(或快速鍵:Win+R)>運行(輸入 cmd)>確定(或按 Enter 鍵),開啟命令提示字元(Windows),執行以下命令。若返回正確的AccessKey,則說明配置成功。如果返回為空白或錯誤,請嘗試重新設定,具體操作請參見設定訪問憑據。
Windows
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Linux/macOS
echo $ALIBABA_CLOUD_ACCESS_KEY_ID
echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET問題2:java: 錯誤:不支援發行版本 X。
在IntelliJ IDEA中,同步選取Ctrl+Alt+Shift+S,進入Project Structure視窗。選擇Modules,在右側Language Level中選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,Language Level選擇“8 - Lambdas, type annotations etc. ”。單擊Apply,單擊OK。
問題3:java: Compilation failed: internal java compiler error。
在IntelliJ IDEA功能表列,單擊File->Settings->Build, Execution, Deployment->Compiler->Java Compiler,Project bytecode version和Target bytecode version選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,這兩項選擇 8 即可。單擊Apply,單擊OK。
問題4:運行時,提示“No SLF4J providers were found”。
“No SLF4J providers were found”錯誤通常的原因是專案中使用了SLF4J,但系統未能找到任何有效日誌實現庫,因此只要添加合適依賴項即可,例如在pom檔案中添加log4j-slf4j-impl依賴:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>