本文以Windows操作系统和IntelliJ IDEA软件为例,介绍如何安装无影云电脑企业版的云电脑管控Java SDK。
前提条件
已安装JDK。如果还未安装,请参见在Windows安装JDK。
已安装IntelliJ IDEA。如果还未安装,请参见在Windows搭建Java开发环境。
操作步骤
使用OpenAPI门户提供的代码示例工程
打开DescribeOfficeSites - 查询办公网络的详细信息文档,并单击右上角的调试。
在OpenAPI门户页面上,根据提示登录您的阿里云账号。
填写相关输入参数后,单击发起调用,即可看到调用结果。
调试通过后,如需获取示例代码,请在右侧面板上单击SDK示例页签,然后选择一种语言,并单击下载完整工程。
说明完整工程中包含SDK信息和当前OpenAPI的调用demo。
打开IntelliJ IDEA,在顶部菜单栏中选择
,并打开解压后的示例工程文件夹,等待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>ecd20200930</artifactId> <version>4.3.0</version> </dependency> </dependencies>
下载依赖。
右键单击项目名称,在弹出菜单中选择
来下载Maven依赖。创建Java类。
右键单击
src/main/java
目录并选择 ,输入名称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, runtime); } }
处理异常。
阿里云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_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”。
同时按下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文件中添加Log4j2依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>