全部產品
Search
文件中心

Alibaba Cloud SDK:在Windows搭建Java開發環境

更新時間:Jun 12, 2026

本文以在Windows作業系統上使用IntelliJ IDEA為例,為您講解如何搭建Java開發環境。

什麼是Java開發環境

Java開發環境是指可以進行Java程式開發的一組配置和工具的集合。它包含了JDK、IDE(整合式開發環境,如IntelliJ IDEA、Eclipse、VSCode)、構建工具(如Maven)等。

安裝JDK

具體安裝步驟,請參見在Windows安裝JDK

安裝IDE

以安裝IntelliJ IDEA Community為例,訪問IntelliJ IDEA Community下載頁面,單擊Download,待下載完成後根據操作嚮導安裝即可。

重要

安裝時,在安裝選項步驟,需要勾選“添加‘bin’檔案夾到 PATH”。其他步驟可以直接單擊下一步即可。

建立一個 Maven專案

  1. 開啟IntelliJ IDEA,單擊New Project。

    Project是一個全面的、功能齊全的開發環境集合,涵蓋從代碼編寫到測試、構建、運行及部署的全過程。藉助於這樣一個Integration Environment,開發人員能夠有效地管理和維護他們的軟體應用。

  2. 在New Project視窗左側選擇Java,在右側填寫以下資訊:

    Name:您準備建立的專案名稱,這裡填入helloaliyun。

    Location:專案檔的儲存位置,方便您管理專案檔。

    Build system:選擇Maven,表示建立了一個Maven專案。

    JDK:選擇JDK版本,這裡選擇JDK 8。

    說明

    選擇JDK,需要您單擊Add JDK...手動選擇您已安裝的JDK,選擇JDK的安裝目錄即可。

    Add sample code:勾選之後會協助您建立一個Main類。

  3. 單擊Create。

    您就建立了一個名稱為helloaliyun的專案,專案包含一個簡單的pom.xml檔案和src/main/java主代碼目錄,和一個名為Main的類。

  4. 驗證是否搭建成功。

    在專案src/main/java目錄下,找到org.example包,在包下找到名稱為Main的類,雙擊Main名稱開啟檔案,單擊右上方的運行按鈕。

    查看控制台是否輸出Hello World!字樣,若輸出則說明Java開發環境搭建成功。

    運行輸出:

    "D:\Program Files\Java\jdk-1.8\bin\java.exe" ...
    Hello world!
    Process finished with exit code 0

後續操作

在搭建完成Java開發環境後,您可以通過以下方式迅速體驗Java的實際應用情境:利用Java進行多種開發操作。以下是一些具體的使用情境及操作指南:

1.使用Java SDK調用阿里雲OpenAPI

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

    重要

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

  2. 登入SDK Center,選擇將要使用的產品,例如您將要調用Elastic Compute Service的DescribeInstanceTypeFamilies介面為例。

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

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

  5. 程式碼範例:

    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;
    import com.google.gson.Gson;
    public class Sample {
        public static void main(String[] args) {
            try {
                Config config = new Config()
                        // System.getenv表示從環境變數擷取密鑰
                        .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-qingdao");
                describeInstanceTypeFamiliesRequest.setGeneration("ecs-5");
                DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest);
                System.out.println(new Gson().toJson(describeInstanceTypeFamiliesResponse));
            } 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);
            }
        }
    }
              
  6. 運行結果:運行代碼後,API 返回 statusCode 為 200,表示調用成功,響應 body 中包含 InstanceTypeFamilies 執行個體規格類型系列列表。返回內容片段:

    ...'statusCode': 200, 'body': {'InstanceTypeFamilies': {'InstanceTypeFamily': [{'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.g6'}, {'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.ebmg6'}]}}
  7. 使用Java SDK調用阿里雲OpenAPI,具體操作,請參見通過IDE使用阿里雲Java SDK

2.調用千問API實現對話功能

  1. 阿里雲百鍊支援通過API調用大模型,涵蓋OpenAI相容介面、DashScope SDK等接入方式。調用服務前您需要開通阿里雲百鍊,擷取API KEY。具體操作,請參見帳號設定

    重要

    在擷取API Key後,需將其配置到環境變數,以避免在代碼中顯式地設定API Key,從而降低泄露風險。具體操作步驟請參見配置API Key到環境變數

  2. 在pom.xml中添加以下依賴以安裝OpenAI Java SDK:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dashscope-sdk-java</artifactId>
        <!-- 請將 'the-latest-version' 替換為最新版本號碼:https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
        <version>the-latest-version</version>
    </dependency>
  3. 如您已完成Java及OpenAI的Java SDK安裝,可運行以下範例程式碼以調用千問API:

    package org.example.nlp.ai;
    import java.util.Arrays;
    import java.lang.System;
    import com.alibaba.dashscope.aigc.generation.Generation;
    import com.alibaba.dashscope.aigc.generation.GenerationParam;
    import com.alibaba.dashscope.aigc.generation.GenerationResult;
    import com.alibaba.dashscope.common.Message;
    import com.alibaba.dashscope.common.Role;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.InputRequiredException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    public class Sample {
        public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
            Generation gen = new Generation();
            Message systemMsg = Message.builder()
                    .role(Role.SYSTEM.getValue())
                    .content("You are a helpful assistant.")
                    .build();
            Message userMsg = Message.builder()
                    .role(Role.USER.getValue())
                    .content("你是誰?")
                    .build();
            GenerationParam param = GenerationParam.builder()
                    // System.getenv表示通過環境變數擷取API Key,若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx"。
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model("qwen-plus")
                    .messages(Arrays.asList(systemMsg, userMsg))
                    .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                    .build();
            return gen.call(param);
        }
        public static void main(String[] args) {
            try {
                GenerationResult result = callWithMessage();
                System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
            } catch (ApiException | NoApiKeyException | InputRequiredException e) {
                System.err.println("錯誤資訊:"+e.getMessage());
            }
            System.exit(0);
        }
    }
                    
  4. 輸出結果:運行上述代碼後,預期輸出類似如下結果:

    15:44:00.413 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] connectionPoolSize: 32
    15:44:00.468 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] maxRequests: 32
    15:44:00.468 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] maxRequestsPerHost: 32
    我是通義千問,阿里巴巴集團旗下的通義實驗室自研發的超大規模語言模型。我能夠回答問題、創作文字,比如寫故事、公文、郵件、劇本、詩歌等,還能進行邏輯推理、編程、甚至玩遊戲。我在多國語言上都有很好的掌握,能為你提供多樣化的協助。如果你有任何問題需要創作內容
  5. 調用千問API,具體操作,請參見OpenAI Java SDK

3.調用DeepSeek API

本段主要介紹在阿里雲百鍊平台上通過API調用DeepSeek系列模型的方法。其中,deepseek-r1與deepseek-v3各提供100萬個免費Token,部分蒸餾模型可限時免費體驗。

  1. 調用服務前您需要開通阿里雲百鍊,擷取API KEY。具體操作,請參見帳號設定

    重要

    在擷取API Key後,需將其配置到環境變數,以避免在代碼中顯式地設定API Key,從而降低泄露風險。具體操作步驟請參見配置API Key到環境變數

  2. 在pom.xml中添加以下依賴以安裝OpenAI Java SDK:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dashscope-sdk-java</artifactId>
        <!-- 請將 'the-latest-version' 替換為最新版本號碼:https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
        <version>the-latest-version</version>
    </dependency>
    重要

    dashscope SDK的版本 >= 2.18.2。

  3. 如果您已完成Java及OpenAI的Java SDK的安裝,可以運行以下範例程式碼以調用DeepSeek模型服務:

    import java.util.Arrays;
    import java.lang.System;
    import com.alibaba.dashscope.aigc.generation.Generation;
    import com.alibaba.dashscope.aigc.generation.GenerationParam;
    import com.alibaba.dashscope.aigc.generation.GenerationResult;
    import com.alibaba.dashscope.common.Message;
    import com.alibaba.dashscope.common.Role;
    import com.alibaba.dashscope.exception.ApiException;
    import com.alibaba.dashscope.exception.InputRequiredException;
    import com.alibaba.dashscope.exception.NoApiKeyException;
    public class Sample {
        public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
            Generation gen = new Generation();
            Message userMsg = Message.builder()
                    .role(Role.USER.getValue())
                    .content("9.9和9.11誰大?")
                    .build();
            GenerationParam param = GenerationParam.builder()
                    // 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:.apiKey("sk-xxx")
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .model("deepseek-r1")
                    .messages(Arrays.asList(userMsg))
                    // 不可以設定為"text"
                    .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                    .build();
            return gen.call(param);
        }
        public static void main(String[] args) {
            try {
                GenerationResult result = callWithMessage();
                System.out.println("思考過程:");
                System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent());
                System.out.println("最終答案:");
                System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
            } catch (ApiException | NoApiKeyException | InputRequiredException e) {
                // 使用日誌架構記錄異常資訊
                System.err.println("An error occurred while calling the generation service: " + e.getMessage());
            }
            System.exit(0);
        }
    }
                    
  4. 查看輸出結果。

    思考過程:
    嗯,使用者問的是9.9和9.11哪個大。這個問題看起來很簡單,但其實可能需要仔細分析,特別是考慮到數位表示方式。首先,我應該確認使用者指的是小數還是其他形式的數字,比如版本號碼或者日期。不過根據常見的數學問題,這裡應該是指小數比較。
    首先,我需要明確這兩個數的結構。9.9通常被理解為9加0.9,也就是9.90。而9.11則是9加0.11。這樣比較的話,整數部分都是9,所以需要比較小數部分。9.90和0.11。顯然,0.90大於0.11,所以9.9應該比9.11大。不過,這裡可能存在一個常見的誤解,尤其是當數字被當作版本號碼時,比如軟體版本中的
    不過,可能使用者有其他的考慮,比如是否把9.11誤解為9又11/100,也就是0.11,而9.9則是0.9。這時候,0.9明顯大於0.11,所以答案還是9.9大。但有時候,人們可能會錯誤地認為9.11的十分位是1,而9.9的十分位是9,所以直接比較十分位的話,9.9更大。不過,正確的做法是將小數位元對齊,把9.
    總結起來,無論是作為小數還是版本號碼,答案可能不同,但根據數學標準,作為小數的話,9.9更大。不過需要確認使用者是否考慮的是版本號碼的情況,如果是的話,答案相反。因此,可能需要進一步詢問使用者的情境,但根據一般數學問題,應回答9.9更大。
    最終答案:
    9.9和9.11比較時,若按**數學中的小數**理解:
    - 將9.9補全為9.90,其小數部分為0.90;
    - 9.11的小數部分為0.11;
    - 顯然**0.90 > 0.11**,因此**9.9 > 9.11**。
    若涉及**版本號碼**(如軟體版本):
    - 9.11可能表示第9版的第11次更新,而9.9是第9版的第9次更新,此時**9.11 > 9.9**。
    **預設按數學小數比較**,結論為 **9.9 更大**。