Java老版(不推荐)

本文介绍了如何使用阿里云视觉智能开放平台的Java SDK,具体包括SDK的安装方法以及SDK代码示例。

说明

阿里云视觉智能开放平台各类目视觉AI能力SDK接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

本文档是老版Java SDK,最低环境要求Java6,推荐使用新版Java

您需要引入的SDK包如下:

准备工作

  • 在使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。详情请参见创建AccessKey

  • 已安装Java SDK核心库。 有如下两种方式:

    • 使用依赖包工具安装(推荐)。

    • 使用git clone或其它方法从GitHub下载aliyun-java-sdk-core并自行添加解决方案。

  • 已安装视觉智能API相关服务Java SDK。

查看SDK版本

pom.xml文件中version的值以SDK获取地址中的最新版本为准。您可以通过https://mvnrepository.com/artifact/com.aliyun/SDK包名称查看不同服务SDK的版本。

例如,通过https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-ocr可以查看aliyun-java-sdk-ocr的版本。

安装方法1:使用Maven(推荐)

如果您使用Maven管理Java项目,可以通过在pom.xml文件中添加Maven依赖安装Java SDK。

<!-- 核心包,必须引入 -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.6.2</version>
</dependency>
<!-- 能力包,按需引入 -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ocr</artifactId>
    <version>${aliyun.ocr.version}</version>
</dependency>

安装方法2:在集成开发环境(IDE)中导入JAR文件

无论您使用Eclipse还是IntelliJ作为集成开发环境,都可以通过导入JAR文件的方式安装Java SDK。

  • Eclipse安装

    1. 将下载的aliyun-java-sdk-xxx.jar文件复制到您的项目文件夹中。

    2. 在Eclipse中打开您的项目,右键单击该项目,选择Properties

    3. 在弹出的对话框中,单击Java Build Path > Libraries > Add JARs添加下载的JAR文件。

    4. 单击Apply and Close

  • IntelliJ安装

    1. 将下载的aliyun-java-sdk-xxx.jar文件复制到您的项目文件夹中。

    2. 在IntelliJ中打开您的项目,在菜单栏中单击File > Project > Structure

    3. 单击Apply,然后单击OK

SDK示例

本文以RecognizeBankCard为例,SDK示例如下。该方式目前只支持同地域下OSS文件,其他场景请使用新版Java

package com.aliyun.sample;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.ocr.model.v20191230.RecognizeBankCardRequest;
import com.aliyuncs.ocr.model.v20191230.RecognizeBankCardResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
        IAcsClient client = new DefaultAcsClient(profile);

        RecognizeBankCardRequest request = new RecognizeBankCardRequest();
        request.setImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg");

        try {
            RecognizeBankCardResponse response = client.getAcsResponse(request);
            // 获取整体结果
            System.out.println(new Gson().toJson(response));
            // 获取单个字段
            System.out.println(response.getData().getCardNumber());
        } catch (ServerException e) {
            // 服务端异常
            System.out.println(String.format("ServerException: errCode=%s, errMsg=%s, requestId=%s", e.getErrCode(), e.getErrMsg(), e.getRequestId()));
        } catch (ClientException e) {
            // 客户端错误
            System.out.println(String.format("ClientException: errCode=%s, errMsg=%s, requestId=%s", e.getErrCode(), e.getErrMsg(), e.getRequestId()));
        } catch (Exception e) {
            System.out.println("Exception:" + e.getMessage());
        }
    }

}
                

常见问题

报错Caused by: java.lang.ClassNotFoundException......如何解决?

报错信息

Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.NoopHostnameVerifier
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/DefaultHostnameVerifier
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.DefaultHostnameVerifier

解决方案

将HTTP Client的JAR包提升到4.5.13版本,更多信息,请参见HTTP Client的Maven仓库

关于升级操作是否会影响原来使用该JAR包的程序,从版本升级上来说一般不会影响。HTTP Client4.3升级到HTTP Client4.5,可能会涉及到一些API的更改,因此某些代码可能需要进行调整才能与新版本兼容。为了确保在升级后不会遇到问题,建议在升级之前进行充分的测试(例如测试是否能跑通,或者在预发环境灰度测试等),并查看Apache HttpClient的发行说明,以便了解任何API变更和已知问题。

后续处理

  1. 安装后重新调用报错

    • 报错信息

      java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)Lcom/google/gson/JsonElement;
    • 解决方案:gson包版本的问题,需升级gson版本到2.8.9。

  2. 继gson包更新安装后重新调用报错

  3. 继io/opentracing/util/GlobalTracer的问题解决后报错

    • 报错信息

      java.lang.NoClassDefFoundError: io/opentracing/noop/NoopTracerFactory
    • 解决方案:安装JAR包opentracing-noop

阿里云首页 视觉智能开放平台 相关技术圈