全部产品
Search
文档中心

Alibaba Cloud SDK:FAQ

更新时间:Dec 23, 2025

Dokumen ini membantu Anda mengintegrasikan dan menggunakan kit pengembangan perangkat lunak (SDK) Java dengan cepat serta menjawab pertanyaan umum untuk mendukung operasi yang akurat dan efisien.

Pemeriksaan lingkungan

  • Pastikan lingkungan Java telah terinstal dengan benar. Versi Java Anda harus 1.8 atau yang lebih baru.

  • Pastikan jaringan Anda dapat mengakses API Alibaba Cloud.

Daftar pertanyaan

Masalah pengiriman parameter AK.

Gejala: Terjadi kesalahan saat kode dijalankan. Jika pesan kesalahan berisi informasi berikut, AccessKey tidak dikonfigurasi dengan benar.

  • SDK V2.0: Cannot invoke "com.aliyun.credentials.Client.getCredential()" because "this._credential" is null.

  • SDK V1.0: ErrCode: MissingAccessKeyId. ErrMsg: AccessKeyId is mandatory for this action.

Solusi:

  1. Jalankan perintah berikut untuk memeriksa apakah ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi dalam variabel lingkungan Anda:

    Linux/macOS

    echo $ALIBABA_CLOUD_ACCESS_KEY_ID
    echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

    Windows

    echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
    echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

    Jika AccessKey yang benar dikembalikan, konfigurasi berhasil. Jika nilai kembaliannya kosong atau salah, coba atur ulang. Untuk informasi selengkapnya, lihat Konfigurasikan variabel lingkungan pada sistem Linux, macOS, dan Windows.

  2. Periksa kode Anda untuk kesalahan terkait AK.

    Contoh kesalahan umum:

    Config config = new Config()
             .setAccessKeyId(System.getenv("yourAccessKeyID"))   
             .setAccessKeySecret(System.getenv("yourSecret")); 

    Contoh yang benar:

    Config config = new Config()
            .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
            .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    Catatan

    System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") dan System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") mengambil nilai ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dari variabel lingkungan.

    Penting

    Jangan hardcode AccessKey Anda dalam kode produksi. Praktik ini menimbulkan risiko keamanan.

unable to get credentials from any of the providers in the chain : ...

Penyebab: Anda menggunakan kredensial default dalam proyek Anda (seperti pada contoh kode di bawah), tetapi kesalahan ini terjadi karena Anda belum mengonfigurasi jenis kredensial apa pun yang didukung oleh kredensial default.

com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
        .setCredential(credential);

Solusi:

  • Jika Anda ingin menggunakan AccessKey secara langsung dalam kode, lihat kode berikut:

    com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
            // Contoh ini menunjukkan cara mendapatkan ID AccessKey dari variabel lingkungan.
            .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
            // Contoh ini menunjukkan cara mendapatkan rahasia AccessKey dari variabel lingkungan.
            .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

    Untuk menggunakan kredensial lainnya, lihat Kelola kredensial akses.

  • Untuk tetap menggunakan kredensial default, Anda harus mengonfigurasi salah satu jenis kredensial yang didukung oleh rantai penyedia kredensial default.

kode 403, Anda tidak berwenang untuk melakukan operasi ini. Action: xxxx.

image

Penyebab langsung masalah ini adalah bahwa pengguna Resource Access Management (RAM), role, atau grup pengguna yang memanggil API belum diberikan izin yang diperlukan untuk melakukan operasi API tersebut. Action:XXXX dalam pesan kesalahan menunjukkan operasi API spesifik yang sedang Anda coba panggil. Misalnya, Action:dysms:SendSms menunjukkan bahwa Anda perlu memanggil API SendSms dari Short Message Service, tetapi akun saat ini tidak memiliki izin untuk memanggil API ini. Oleh karena itu, Anda perlu memberikan izin kepada akun RAM untuk mengirim pesan teks.

Solusi:

  1. Hubungi pengguna RAM dengan izin administrator dan buat kebijakan izin kustom berdasarkan isi kebijakan berikut. Untuk informasi selengkapnya, lihat Buat kebijakan izin kustom.

    Catatan

    Kebijakan akses ini hanya mengizinkan pemanggilan API SendSms dari Short Message Service (dysms). Gantilah dengan layanan dan API aktual dari pesan kesalahan Anda.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendSms",
          "Resource": "*"
        }
      ]
    }
  2. Berikan izin kepada akun RAM. Untuk informasi selengkapnya, lihat:

Kesalahan saat mengimpor dependensi Maven: Could not find artifact com.aliyun:XX:XX

Deskripsi:

Saat mengimpor dependensi dalam proyek Maven, pesan kesalahan menunjukkan bahwa dependensi yang sesuai tidak dapat ditemukan.

Solusi:

Konfigurasikan alamat repositori pusat Maven dalam proyek Anda. Ini memberi tahu Maven dari mana mengunduh dependensi selama pembuatan proyek. Anda dapat menggunakan salah satu metode berikut:

  • Tambahkan konten berikut ke file pom.xml:

    <repositories>
        <repository>
            <id>central</id>
            <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
            <id>nexus-noke</id>
            <url>http://nexus.noke.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
  • Tambahkan konten berikut ke file settings.xml:

    <settings>
        <!-- Pengaturan yang sudah ada -->
        
        <mirrors>
            <mirror>
                <!-- ID ini bisa berupa pengenal unik apa pun -->
                <id>central</id>
                <mirrorOf>central</mirrorOf>
                <name>Maven Central Mirror</name>
                <url>https://repo1.maven.org/maven2</url>
            </mirror>
        </mirrors>
    </settings>

java: Error: rilis versi X tidak didukung.

Di IntelliJ IDEA, tekan Ctrl+Alt+Shift+S untuk membuka jendela Project Structure. Pilih Modules. Di sebelah kanan, untuk Language Level, pilih versi yang sesuai dengan versi JDK Anda. Misalnya, jika Anda menggunakan JDK 8, pilih "8 - Lambdas, type annotations etc." untuk Language Level. Klik Apply, lalu klik OK.

image

java: Kompilasi gagal: kesalahan kompiler java internal.

Pada menu bar IntelliJ IDEA, klik File → Settings → Build, Execution, Deployment → Compiler → Java Compiler. Untuk Project bytecode version dan Target bytecode version, pilih versi yang sesuai dengan versi JDK Anda. Misalnya, jika Anda menggunakan JDK 8, pilih 8 untuk kedua opsi tersebut. Klik Apply, lalu klik OK.

image

kode: 400, <CERTAIN_FIELD > wajib untuk aksi ini.

Penyebab langsung masalah ini adalah parameter yang diperlukan tidak diisi saat memanggil API. Solusi:

Contoh berikut menggunakan API SendSms dari Short Message Service:

  • Buka halaman API debugging di OpenAPI Portal, lalu pilih produk cloud dan API-nya.

  • Bandingkan secara teliti objek permintaan yang dibuat, seperti SendSmsRequest, untuk memastikan semua bidang yang wajib diisi, seperti nomor telepon dan signature, telah dilengkapi.

  • Merujuk pada dokumentasi API untuk mengonfirmasi parameter yang diperlukan.

  • Pastikan nilai parameter yang wajib diisi sudah benar. Misalnya, periksa apakah format nomor telepon memenuhi persyaratan.

  • Sebelum memanggil API, SDK secara otomatis memvalidasi parameter. Jika parameter yang wajib diisi tidak ada, Anda akan menerima kesalahan seperti MissingRequiredParameter. Misalnya, jika parameter nomor telepon tidak ada, kesalahan "MissingPhoneNumbers: kode: 400" akan dilaporkan.

image

SendSmsRequest sendSmsRequest = new SendSmsRequest()
        // Ganti dengan nomor telepon yang akan menerima pesan teks.
        .setPhoneNumbers("<YOUR_VALUE>")
        // Ganti dengan signature SMS Anda.
        .setSignName("<YOUR_VALUE>")
        // Ganti dengan kode template SMS Anda.
        .setTemplateCode("<YOUR_VALUE>");

java.lang.NoSuchMethodError, java.lang.NoSuchFieldError

Penyebab:

Jenis pengecualian ini biasanya terjadi ketika lingkungan runtime Java mencoba memanggil metode atau mengakses bidang yang tidak ada. Penyebab yang mungkin meliputi:

  • Versi dependensi usang: Versi dependensi yang usang mungkin ditentukan dalam file konfigurasi alat build seperti Maven atau Gradle (misalnya, pom.xml atau build.gradle).

  • Konflik dependensi: Beberapa versi dependensi yang sama mungkin ada dalam proyek, menyebabkan versi dependensi yang lebih rendah dimuat saat runtime.

  • Dependensi tidak diperbarui: Setelah memperbarui versi dependensi, proyek tidak dibangun ulang atau cache tidak dihapus, sehingga versi lama masih digunakan.

  • Lingkungan kompilasi dan runtime tidak konsisten: Versi dependensi yang digunakan saat kompilasi tidak konsisten dengan versi dependensi saat runtime.

  • Konflik classpath: Classpath yang salah dipilih saat impor.

Solusi:

  1. Periksa contoh yang disediakan di Alibaba Cloud OpenAPI Portal untuk melihat apakah ada kesalahan pada classpath.

  2. Jika classpath benar, Anda dapat memperoleh kelas spesifik yang menyebabkan kesalahan dari informasi stack pengecualian dan menemukan dependensi serta versi yang sesuai.

  3. Jalankan perintah berikut untuk melihat dependensi langsung dan transitif proyek, beserta konflik dan duplikasi spesifiknya.

    • Maven: Maven menggunakan strategi "shortest path first" dan "declaration order first" secara default untuk menentukan versi dependensi yang digunakan. Anda dapat menyelesaikan konflik dengan menyesuaikan urutan dependensi.

      mvn dependency:tree -Dverbose
    • Gradle: Gradle menggunakan strategi "highest version first" secara default untuk menyelesaikan konflik. Artinya, hanya versi yang usang yang bisa menjadi masalah. Lanjutkan ke langkah 4 untuk mendapatkan versi terbaru dependensi.

  4. Dalam pohon dependensi yang dihasilkan, periksa apakah ada konflik dengan dependensi atau dependensi induknya. Jika ada konflik, pindahkan dependensi atau dependensi induk dengan versi tertinggi ke bagian atas bagian <dependencies></dependencies> dalam file pom.xml. Jalankan mvn clean install -U untuk membangun ulang. Jika kesalahan masih berlanjut, lanjutkan ke langkah berikutnya.

  5. Temukan versi terbaru dependensi yang sesuai di Paket dependensi umum Java SDK V2.0. Tentukan ulang versi terbaru dependensi dalam file konfigurasi alat build, seperti Maven atau Gradle (misalnya, pom.xml atau build.gradle).

  6. Jalankan perintah berikut untuk membersihkan dan membangun ulang proyek:

    • Maven

      mvn clean install -U
    • Gradle:

      gradle clean build --refresh-dependencies
  7. Verifikasi bahwa masalah telah terselesaikan.

Contoh:

Pesan pengecualian adalah java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential().

  1. Setelah diperiksa, classpath sudah benar.

  2. Berdasarkan pesan pengecualian, pengecualian terjadi di kelas com.aliyun.credentials.Client, yang berada dalam dependensi credentials-java. Versi yang saat ini dirujuk adalah 0.2.4.

  3. Setelah menjalankan mvn dependency:tree -Dverbose, ditemukan bahwa dependensi induk credentials-java, tea-openapi, mengalami konflik versi. Versi yang saat ini dirujuk adalah 0.3.2, dan versi yang bertentangan adalah 0.3.8. Disarankan untuk memindahkan dependensi induk yang sesuai dengan versi tea-openapi 0.3.8 ke bagian atas bagian <dependencies></dependencies>.

  4. Jalankan perintah mvn clean install -U untuk membersihkan dan membangun ulang proyek, lalu verifikasi bahwa masalah telah terselesaikan.

  5. Jika masalah masih berlanjut, Anda dapat memperoleh versi terbaru credentials-java dari Maven Central: com.aliyun:credentials-java dan menambahkan dependensi tersebut secara manual ke file pom.xml.

"TeaUnretryableException: timeout", "java.net.SocketTimeoutException: connect timed out", "java.net.SocketTimeoutException: Read timed out", "SDK.ServerUnreachable", "Connection aborted", atau "RemoteDisconnected".

Masalah timeout dapat disebabkan oleh beberapa faktor. Berikut adalah penyebab umum dan solusinya:

Masalah konektivitas jaringan

Deskripsi: Jaringan antara client dan server terputus atau tidak stabil, menyebabkan permintaan gagal mencapai server tujuan.

Solusi:

Gunakan perintah ping atau curl untuk menguji konektivitas antara host lokal dan Titik Akhir produk cloud. Misalnya, jika pemanggilan API kirim pesan teks mengalami timeout, gunakan ping dysmsapi.aliyuncs.com atau curl -v https://dysmsapi.aliyuncs.com untuk menguji konektivitas.

  • Jika perintah mengalami timeout atau tidak merespons, periksa apakah ada kebijakan pemblokiran di firewall lokal atau router.

  • Jika perintah merespons, atur periode timeout yang wajar untuk menghindari kegagalan permintaan akibat konfigurasi yang tidak tepat. Untuk informasi selengkapnya, lihat Mekanisme timeout. Berikut adalah contoh kodenya:

// Pengaturan timeout parameter runtime. Ini hanya berlaku untuk permintaan yang menggunakan instance parameter runtime ini.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 5000;

Waktu pemrosesan API yang lama

Deskripsi: Waktu yang dibutuhkan API tujuan untuk memproses permintaan melebihi periode timeout baca yang dikonfigurasi.

Solusi: Konfigurasikan periode timeout baca agar sesuai dengan waktu respons API yang lebih lama. Untuk informasi selengkapnya, lihat Mekanisme timeout. Misalnya, Anda dapat memperpanjang periode timeout baca untuk permintaan saat ini dengan mengonfigurasi parameter timeout baca. Berikut adalah contoh kodenya:

// Pengaturan timeout parameter runtime. Ini hanya berlaku untuk permintaan yang menggunakan instance parameter runtime ini.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.readTimeout = 10000;

Permintaan Anda ditolak karena kurangnya perlindungan ssl.RequestId .

Masalah ini terjadi karena API mengharuskan Anda menggunakan protokol HTTPS, tetapi Anda menggunakan protokol HTTP.

Solusi:

  • Untuk SDK V1.0, Anda dapat mengatur permintaan agar dikirim melalui protokol HTTPS pada objek Request:

    request.setSysProtocol(com.aliyuncs.http.ProtocolType.HTTPS);
  • Gunakan SDK V2.0. SDK V2.0 menggunakan protokol HTTPS secara default.

kode: 404, API yang ditentukan tidak ditemukan, harap periksa URL dan metode Anda.

Penyebab langsung kesalahan ini mungkin karena Anda memasukkan Titik Akhir atau RegionId yang salah saat memanggil API produk. Solusinya sebagai berikut:

Pastikan wilayah yang Anda pilih mendukung layanan yang Anda panggil. Anda dapat menemukan Titik Akhir produk di halaman utamanya di OpenAPI Developer Portal. Contoh berikut menggunakan Short Message Service.image

Kode respons tak terduga untuk CONNECT: 400.

Penyebab langsung masalah ini adalah permintaan dicegat oleh node perantara dan tidak mencapai gerbang Alibaba Cloud.

Solusi:

  • Konfigurasi server proxy mungkin salah. Artinya, layanan proxy tidak dapat meneruskan permintaan ke gerbang Alibaba Cloud dengan benar. Anda dapat memeriksa konfigurasi proxy dengan curl. curl https://<nama domain layanan Alibaba Cloud>/ -v -x <alamat IP proksi/nama domain proksi>:<port proksi>, misalnya, curl https://ecs-cn-hangzhou.aliyuncs.com/ -v -x 127.0.0.1:3128.

  • Permintaan mungkin diblokir oleh firewall jaringan internal. Di lingkungan lokal, coba ganti lingkungan jaringan, misalnya dengan menghubungkan ke hotspot ponsel.

Tidak dapat mengatur bidang java.lang.String com.aliyun.imm20200930.models.GenerateWebofficeTokenShrinkRequest.userShrink ke java.util .

Penyebab langsung masalah ini adalah paket Tea versi lama tidak dapat mengonversi struktur kompleks menjadi struktur String, yang menyebabkan kesalahan.

Solusi:

Tingkatkan paket Tea ke versi 1.2.7 atau lebih baru.

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>tea</artifactId>
  <version>1.2.7</version>
</dependency>

Gagal mengunduh dependensi secara otomatis dengan Maven di IDEA.

  • Perbarui repositori Maven

    Buka menu "File" dan pilih "Pengaturan (Settings)" (atau "Preferensi (Preferences)"). Di panel navigasi sebelah kiri, perluas "Build, Execution, Deployment", lalu pilih "Build Tools" > "Maven". Temukan tab "Repositories", pilih repositori lokal, klik tombol "Update", dan tunggu hingga pembaruan selesai.tempsnip

  • Periksa cache IDEA

    Buka menu "File", pilih "Invalidate Caches...". Di kotak dialog yang muncul, pilih "Invalidate and Restart", dan tunggu hingga IDEA membersihkan cache dan memulai ulang.

    image

  • Periksa koneksi jaringan

    Jika Maven tidak dapat terhubung ke repositori pusat atau repositori jarak jauh lainnya, Maven mungkin tidak dapat mengunduh dependensi. Pastikan koneksi jaringan Anda normal dan tidak ada firewall atau server proxy yang memblokir akses Maven.

  • Periksa konfigurasi Maven

    Periksa apakah file konfigurasi Maven (biasanya settings.xml) dikonfigurasi dengan benar. Pastikan "localRepository" mengarah ke jalur repositori lokal yang benar, dan "mirrors", "proxies", serta "profiles" dikonfigurasi dengan benar.

Cara menghindari pesan WARNING yang disebabkan oleh refleksi.

image.png

Saat Anda menggunakan SDK Alibaba Cloud dengan versi JDK yang lebih tinggi untuk pengembangan, Anda mungkin menemui pesan peringatan terkait refleksi. Peringatan ini dapat memengaruhi output program, terutama ketika Anda ingin menghindari pesan log yang tidak perlu di lingkungan produksi.

Solusi:

Anda dapat mengatur variabel lingkungan ALIBABA_CLOUD_SDK_LOG_LEVEL ke ERROR untuk menekan tampilan pesan peringatan. Prosedurnya:

  1. Atur variabel lingkungan:

    Windows

    set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR

    Linux/macOS

    export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR
  2. Konfirmasi pengaturan variabel lingkungan:

    Windows

    echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%

    Linux/macOS

    echo $ALIBABA_CLOUD_SDK_LOG_LEVEL
  3. Jalankan aplikasi Anda: Setelah Anda mengonfigurasi variabel lingkungan, jalankan aplikasi Java Anda. Pada titik ini, pesan peringatan yang dihasilkan oleh SDK Alibaba Cloud tidak akan ditampilkan. Anda hanya akan melihat pesan log tingkat ERROR atau lebih tinggi.

Catatan
  • Untuk mengubah tingkat log untuk debugging atau pengembangan, Anda dapat mengubah nilai variabel lingkungan menjadi DEBUG atau INFO.

Tanda tangan yang ditentukan tidak cocok dengan perhitungan kami.

image.png

Penyebab langsung masalah ini biasanya ketidaksesuaian antara signature permintaan dan signature yang dihitung oleh server. Penyebab yang mungkin termasuk namun tidak terbatas pada:

  • AccessKey (AK) disalin secara salah

  • Algoritma signature salah

  • Periksa apakah parameter permintaan dan urutannya memenuhi persyaratan API.

Solusi:

  1. Pastikan AccessKey dan rahasia AccessKey yang diatur dalam kode Anda persis sama dengan yang Anda peroleh dari konsol. Periksa adanya spasi tambahan atau karakter khusus. Gunakan AccessKey yang sudah ada atau buat yang baru. Untuk informasi selengkapnya, lihat Buat Pasangan Kunci Akses. Catatan: Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan sekali saat dibuat dan tidak dapat dilihat lagi nanti. Pastikan untuk menyimpannya dengan aman.

  2. Tingkatkan versi commons-codec untuk menghindari potensi kesalahan perhitungan signature:image.png

    Perbarui dependensi:

    Maven

    Ubah file pom.xml.

    <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
       <version>1.15</version> <!-- Versi yang diperbarui -->
    </dependency>

    Setelah memperbarui nomor versi, jalankan perintah berikut:

    mvn clean install

    Gradle

    Dalam file build.gradle, tambahkan atau perbarui dependensi:

    dependencies {
         implementation 'commons-codec:commons-codec:1.15' // Versi yang diperbarui
    }

    Jalankan perintah berikut untuk membangun proyek:

    gradle build
  3. Jika Anda menggunakan penandatanganan mandiri, periksa secara teliti apakah logika kode konsisten dengan yang dijelaskan dalam Mekanisme body & signature permintaan V3.

SDK.EndpointResolvingError: "Tidak ada wilayah 'cn-XX'. Harap periksa ID wilayah Anda".

Penyebab langsung masalah ini adalah versi SDK terlalu lama dan tidak mendukung pemanggilan wilayah atau API baru. Solusi:

Tingkatkan versi dependensi SDK:

Maven

Jika Anda menggunakan Maven untuk manajemen proyek, perbarui versi dependensi dalam file pom.xml:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.7.2</version>
</dependency>

Gradle

Jika Anda menggunakan Gradle untuk manajemen proyek, perbarui versi dependensi dalam file build.gradle:

dependencies {
    implementation 'com.aliyun:aliyun-java-sdk-core:4.7.2'
    implementation 'com.aliyun:aliyun-java-sdk-sts:3.1.2'
}

Gagal membuat instance [com.aliyuncs.IAcsClient]: Metode pabrik 'iAcsClient' melemparkan pengecualian dengan pesan: org/apache/http/conn/ssl/DefaultHostnameVerifier .

Penyebab langsung masalah ini adalah penggunaan versi library Apache HttpClient yang tidak kompatibel dengan SDK Alibaba Cloud, yang mengakibatkan kesalahan. Solusi:

  • Jika proyek menggunakan beberapa library dependensi, pastikan tidak ada library lain yang memperkenalkan versi HttpClient yang tidak kompatibel. Tinjau ini melalui pemeriksaan manual atau menggunakan fitur manajemen dependensi dari alat build Anda.

  • Versi Apache HttpClient terlalu lama. Kami menyarankan untuk memperbarui ke versi 4.5.14 atau yang lebih baru.

    <dependency>
        <groupId>org.apache.httpcomponents.client</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.14</version> <!-- Please check for the latest version -->
    </dependency>

Kesalahan saat memanggil OpenAPI: kode: 401, Anda belum mengaktifkan layanan XXX, atau pesan serupa.

Kesalahan ini menunjukkan bahwa Akun Alibaba Cloud yang Anda gunakan belum mengaktifkan atau mengaktifkan layanan yang sesuai. XXX merepresentasikan nama layanan spesifik, seperti layanan OCR. Solusi:

  1. Masuk ke konsol manajemen layanan yang sesuai.

  2. Temukan dan aktifkan fitur yang diperlukan.

  3. Tunggu hingga layanan diaktifkan, lalu panggil API lagi.

Gagal memperoleh kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX

Kredensial peran RAM instans (ecs_ram_role) hanya dapat digunakan dalam instans ECS atau ECI, dan peran RAM harus disambungkan ke instans tersebut. Untuk informasi selengkapnya, lihat Peran RAM instans ECS dan Gunakan peran RAM instans ECI dengan memanggil API.

  • Untuk memverifikasi apakah Anda dapat menggunakan kredensial ini dalam proyek Anda, jalankan perintah berikut di instans ECS:

    • Instans Linux

      # Dapatkan kredensial akses metadata. Anda harus mengatur waktu kedaluwarsa. Permintaan tidak boleh mengandung header X-Forwarded-For. 100.100.100.200 adalah alamat IPv4 layanan metadata instans.
      TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<metadata_credential_expiration_time>"`
      # Akses metadata instans
      curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name]
    • Instans Windows (PowerShell)

      # Dapatkan kredensial akses metadata. Anda harus mengatur waktu kedaluwarsa. Permintaan tidak boleh mengandung header X-Forwarded-For. 100.100.100.200 adalah alamat IPv4 layanan metadata instans.
      $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<metadata_credential_expiration_time>"} -Method PUT -Uri http://100.100.100.200/latest/api/token
      # Akses metadata instans
      Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name]

    Jika konten berikut dikembalikan, proyek Anda dapat menggunakan kredensial peran RAM instans (ecs_ram_role) pada instans tersebut.

    {
      "AccessKeyId" : "AccessKeyIdValue",
      "AccessKeySecret" : "AccessKeySecretValue",
      "Expiration" : "2025-07-10T08:37:58Z",
      "SecurityToken" : "SecurityTokenValue",
      "LastUpdated" : "2025-07-10T02:33:26Z",
      "Code" : "Success"
    }
  • Jika Anda ingin beralih ke kredensial yang berbeda, lihat Kelola kredensial akses.

Ada risiko kebocoran AccessKey ini

Penyebab: Jika respons berisi pesan ini, AK Anda mungkin berisiko bocor. Alibaba Cloud telah menerapkan langkah-langkah perlindungan restriktif untuk AK tersebut.

Solusi: Untuk informasi selengkapnya, lihat Solusi untuk kebocoran AccessKey.

Permintaan ditolak karena pengendalian alur api

Penyebab: SDK dipanggil terlalu sering, yang dapat menyebabkan server mengembalikan kesalahan, seperti "ThrottlingException".

Solusi:

  • Terapkan mekanisme percobaan ulang permintaan dan tingkatkan interval waktu antar permintaan sesuai kebutuhan untuk mengurangi beban.

  • Optimalkan logika kode. Pertimbangkan untuk menggunakan pemrosesan batch atau pemanggilan asinkron untuk mengurangi jumlah permintaan API.

AccessKey yang ditentukan ditolak karena kebijakan akses

Penyebab: Kebijakan pembatasan akses jaringan AccessKey dikonfigurasi. Kebijakan ini membatasi alamat IP sumber yang dapat menggunakan AccessKey permanen untuk membuat permintaan API.

Solusi:

  • Ubah rentang alamat IP dalam kebijakan pembatasan akses jaringan AccessKey.

  • Jangan aktifkan kebijakan pembatasan akses jaringan AccessKey.

Untuk informasi selengkapnya, lihat Kebijakan pembatasan akses jaringan AccessKey.

com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId : Tidak dapat menemukan titik akhir untuk diakses

Penyebab: Pengaturan parameter yang salah, seperti regionId yang salah, dapat menyebabkan layanan gagal atau mengembalikan kesalahan.

Solusi:

  • Merujuk pada dokumentasi dan contoh kode yang disediakan oleh Alibaba Cloud untuk memastikan semua parameter konfigurasi, seperti Endpoint, RegionId, dan parameter permintaan lainnya, diisi dengan benar.

  • Anda dapat melakukan debugging API di OpenAPI Developer Portal. Setelah debugging berhasil, unduh kode proyek contoh lengkap untuk debugging lokal.

Daftar periksa pengecualian Java dasar

Pesan kesalahan

Penyebab

Solusi

NullPointerException

Mencoba memanggil metode atau mengakses properti pada objek null.

Sebelum menggunakan objek, lakukan pemeriksaan null untuk menghindari NullPointerException. Anda dapat menggunakan pernyataan kondisional atau assertion untuk pemeriksaan tersebut.

ArrayIndexOutOfBoundsException

Mencoba mengakses indeks yang tidak ada dalam array.

Pastikan indeks array berada dalam rentang yang valid, yaitu lebih besar atau sama dengan 0 dan kurang dari panjang array. Anda dapat mengontrol kondisi loop atau memeriksa rentang indeks secara manual untuk menghindari pengecualian indeks array di luar batas.

IllegalArgumentException

Metode menerima argumen ilegal.

Periksa parameter yang diteruskan ke metode untuk memastikan memenuhi persyaratan metode. Anda dapat menggunakan pernyataan kondisional atau assertion untuk memeriksa validitas parameter.

ArithmeticException

Terjadi pengecualian dalam operasi aritmetika, seperti pembagian dengan nol.

Sebelum melakukan operasi aritmetika, lakukan pemeriksaan dan pemrosesan yang diperlukan untuk memastikan tidak terjadi pengecualian. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian aritmetika.

ClassCastException

Mencoba meng-cast objek ke tipe yang tidak kompatibel.

Sebelum melakukan cast tipe, gunakan operator instanceof untuk memeriksa tipe dan memastikan tipe objek kompatibel. Jika tipe tidak kompatibel, pertimbangkan untuk menggunakan cast tipe yang sesuai atau mendesain ulang hubungan pewarisan objek.

FileNotFoundException

Mencoba membuka file yang tidak ada.

Pastikan jalur file dan nama file benar, serta file tersebut ada di lokasi yang ditentukan. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian file tidak ditemukan.

IOException

Terjadi pengecualian selama operasi input/output, seperti membaca atau menulis file, atau komunikasi jaringan.

Periksa kebenaran operasi input/output, pastikan file atau sumber daya tersedia, dan tangani kemungkinan pengecualian. Anda dapat menggunakan mekanisme penanganan pengecualian untuk menangani pengecualian input/output.

InterruptedException

Thread terganggu secara tak terduga selama operasi multi-threaded.

Tangani gangguan thread secara tepat saat memproses operasi multi-threaded. Anda dapat menggunakan mekanisme penanganan pengecualian atau pernyataan kondisional untuk menangani pengecualian gangguan thread.

NoSuchMethodException

Mencoba memanggil metode yang tidak ada.

Periksa bahwa nama metode dan parameternya benar, serta pastikan metode yang dipanggil ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian metode tidak ditemukan.

NumberFormatException

Mengonversi string yang tidak dapat dikonversi menjadi angka menjadi angka.

Saat mengonversi string menjadi angka, lakukan pemeriksaan yang wajar terlebih dahulu untuk memastikan string tersebut dapat dikonversi dengan benar menjadi angka. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian format angka.

IndexOutOfBoundsException

Mencoba mengakses indeks yang tidak ada dalam daftar atau string.

Pastikan indeks berada dalam rentang yang valid, yaitu lebih besar atau sama dengan 0 dan kurang dari panjang daftar atau string. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian indeks di luar batas.

UnsupportedOperationException

Mencoba memanggil metode atau operasi yang tidak didukung.

Konsultasikan dokumentasi atau dokumentasi API untuk memahami metode dan operasi yang didukung. Pastikan metode atau operasi tersebut layak dilakukan di lingkungan saat ini.

IllegalMonitorStateException

Memanggil metode wait(), notify(), atau notifyAll() pada waktu yang tidak tepat.

Pastikan menggunakan metode wait(), notify(), atau notifyAll() dengan benar dalam blok kode synchronized. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian status monitor ilegal.

SecurityException

Mencoba melakukan operasi yang melanggar aturan keamanan, seperti akses tidak sah atau izin file.

Periksa aturan keamanan dalam kode untuk memastikan tidak dilanggar. Anda dapat melakukan penyesuaian dan modifikasi yang sesuai berdasarkan aturan keamanan tersebut.

ClassNotFoundException

Mencoba memuat kelas yang tidak ada.

Dalam SDK, ini biasanya merupakan konflik dependensi, di mana beberapa versi dependensi ada bersamaan, menyebabkan class loader memuat versi kelas yang salah. Periksa bahwa nama kelas dan classpath benar, serta pastikan kelas yang diperlukan ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian kelas tidak ditemukan.

NoSuchFieldException

Mencoba mengakses bidang yang tidak ada.

Dalam SDK, ini biasanya merupakan konflik dependensi, di mana dependensi versi lebih rendah mengambil prioritas dalam indeks, menyebabkan metode SDK V2.0 tidak ada. Pastikan nama bidang benar dan bidang yang diakses ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian bidang tidak ditemukan.

Dukungan teknis

Solusi di atas membantu Anda menggunakan SDK Alibaba Cloud. Jika Anda mengalami masalah lain, hubungi kami melalui cara berikut:

  • Kirim tiket: Halaman Pengiriman Tiket Alibaba Cloud.

  • Jika Anda memiliki kebutuhan atau masukan terkait, Anda dapat bergabung dengan grup DingTalk untuk menghubungi dukungan teknis Alibaba Cloud. Nomor grupnya adalah 60965016010.