全部产品
Search
文档中心

阿里云SDK:在Windows搭建Java开发环境

更新时间:Jun 11, 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是一个全面的、功能齐全的开发环境集合,涵盖从代码编写到测试、构建、运行及部署的全过程。借助于这样一个集成环境,开发者能够有效地管理和维护他们的软件应用。

  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,选择将要使用的产品,例如您将要调用云服务器ECS的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 更大**。