安装Java SDK

本文以Windows操作系统和IntelliJ IDEA软件为例,介绍如何安装无影云电脑企业版的云电脑管控Java SDK。

前提条件

操作步骤

使用OpenAPI门户提供的代码示例工程

  1. 打开DescribeOfficeSites - 查询办公网络的详细信息文档,并单击右上角的调试

  2. OpenAPI门户页面上,根据提示登录您的阿里云账号。

  3. 填写相关输入参数后,单击发起调用,即可看到调用结果。

    api_debug

  4. 调试通过后,如需获取示例代码,请在右侧面板上单击SDK示例页签,然后选择一种语言,并单击下载完整工程

    说明

    完整工程中包含SDK信息和当前OpenAPI的调用demo。

    api_debug_download_sdk_sample

  5. 打开IntelliJ IDEA,在顶部菜单栏中选择File > Open,并打开解压后的示例工程文件夹,等待Maven自动安装相关依赖。

  6. 在调用之前,需要先获取访问凭证AccessKey,建议使用RAM用户的AccessKey。更多信息,请参见创建AccessKey

    重要

    获取RAM用户的AccessKey之后,还需要在环境变量中设置AccessKey,具体操作步骤请参见Linux、macOSWindows系统配置环境变量

  7. 双击打开Sample.java,单击右上角的按钮运行示例代码。

    sdk_run_sample_project

  8. 查看运行结果。在底部的日志窗口中按下Ctrl+F并搜索statusCode,如果看到"statusCode":200则表示调用成功。

    sdk_response_statuscode_200

在已有项目中安装SDK

  1. 获取SDK。

    打开无影云电脑企业版云电脑管控SDK安装页面,并获取您要使用的安装方式。本文以Apache Maven方式为例。

    sdk_install_method_maven

  2. 引入SDK。

    打开IntelliJ IDEA中已创建的Maven项目,在pom.xml中插入<dependencies></dependencies>标记对,并在该标记对内部插入上一步获取的Apache Maven依赖。

    <dependencies>
      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>ecd20200930</artifactId>
        <version>4.3.0</version>
      </dependency>
    </dependencies>
  3. 下载依赖。

    右键单击项目名称,在弹出菜单中选择Maven > Reload project来下载Maven依赖。

  4. 创建Java类。

    右键单击src/main/java目录并选择New > Java Class,输入名称Sample,然后按回车。

    bt_new_javaclass

  5. 初始化云产品客户端。

    重要
    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);
        }
    }
  6. 调用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, runtime);
        }
    }
  7. 处理异常。

    阿里云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)。

错误示例:

 Config config = new Config()
         // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
         .setAccessKeyId(System.getenv("LTAI5tA******"))
         // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
         .setAccessKeySecret(System.getenv("0wpTxkN******"));

正确示例:

Config config = new Config()
        // 必填,请确保代码运行环境设置了环境变量 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_IDALIBABA_CLOUD_ACCESS_KEY_SECRET的值。

  • 检查您的环境变量中是否配置有ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_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”。

同时按下Ctrl+Alt+Shift+S,进入Project Structure窗口。选择Modules,在右侧Language Level中选择跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,Language Level选择“8 - Lambdas, type annotations etc. ”。单击Apply,单击OK。

image

问题3:运行时,提示“java: Compilation failed: internal java compiler error”。

IntelliJ IDEA菜单栏,单击File->Settings->Build, Execution, Deployment->Compiler->Java Compiler,Project bytecode versionTarget bytecode version选择跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,这两项选择 8 即可。单击Apply,单击OK。

image

问题4:运行时,提示“No SLF4J providers were found”。

“No SLF4J providers were found”错误通常的原因是项目中使用了SLF4J,但系统未能找到任何有效的日志实现库,因此只要添加合适的依赖项‌即可,例如在pom文件中添加Log4j2依赖:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.17.0</version>
</dependency>