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
tidak dapat memperoleh kredensial dari penyedia mana pun dalam rantai: ...
kode 403, Anda tidak berwenang untuk melakukan operasi ini. Action: xxxx
Kesalahan saat mengimpor dependensi Maven: Could not find artifact com.aliyun:XX:XX
Permintaan Anda ditolak karena kurangnya perlindungan SSL. RequestId.
kode: 404, API yang ditentukan tidak ditemukan. Harap periksa URL dan metode Anda.
Gagal mengunduh dependensi secara otomatis dengan Maven di IDEA.
Cara menghindari pesan WARNING yang disebabkan oleh refleksi.
Tanda tangan yang ditentukan tidak cocok dengan perhitungan kami.
SDK.EndpointResolvingError: "Tidak ada wilayah 'cn-XX'. Harap periksa ID wilayah Anda".
Kesalahan saat memanggil OpenAPI: kode: 401, Anda belum mengaktifkan layanan XXX, atau pesan serupa.
Gagal mendapatkan kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX
com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId: Can not find endpoint to access
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:
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_SECRETWindows
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.
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"));CatatanSystem.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.
PentingJangan 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.

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:
Hubungi pengguna RAM dengan izin administrator dan buat kebijakan izin kustom berdasarkan isi kebijakan berikut. Untuk informasi selengkapnya, lihat Buat kebijakan izin kustom.
CatatanKebijakan akses ini hanya mengizinkan pemanggilan API
SendSmsdari Short Message Service (dysms). Gantilah dengan layanan dan API aktual dari pesan kesalahan Anda.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dysms:SendSms", "Resource": "*" } ] }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.

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.

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.

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:
Periksa contoh yang disediakan di Alibaba Cloud OpenAPI Portal untuk melihat apakah ada kesalahan pada classpath.
Jika classpath benar, Anda dapat memperoleh kelas spesifik yang menyebabkan kesalahan dari informasi stack pengecualian dan menemukan dependensi serta versi yang sesuai.
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 -DverboseGradle: 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.
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 -Uuntuk membangun ulang. Jika kesalahan masih berlanjut, lanjutkan ke langkah berikutnya.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).
Jalankan perintah berikut untuk membersihkan dan membangun ulang proyek:
Maven
mvn clean install -UGradle:
gradle clean build --refresh-dependencies
Verifikasi bahwa masalah telah terselesaikan.
Contoh:
Pesan pengecualian adalah java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential().
Setelah diperiksa, classpath sudah benar.
Berdasarkan pesan pengecualian, pengecualian terjadi di kelas
com.aliyun.credentials.Client, yang berada dalam dependensicredentials-java. Versi yang saat ini dirujuk adalah0.2.4.Setelah menjalankan
mvn dependency:tree -Dverbose, ditemukan bahwa dependensi indukcredentials-java,tea-openapi, mengalami konflik versi. Versi yang saat ini dirujuk adalah0.3.2, dan versi yang bertentangan adalah0.3.8. Disarankan untuk memindahkan dependensi induk yang sesuai dengan versitea-openapi0.3.8ke bagian atas bagian <dependencies></dependencies>.Jalankan perintah
mvn clean install -Uuntuk membersihkan dan membangun ulang proyek, lalu verifikasi bahwa masalah telah terselesaikan.Jika masalah masih berlanjut, Anda dapat memperoleh versi terbaru
credentials-javadari 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.
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.

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.

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.

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:
Atur variabel lingkungan:
Windows
set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERRORLinux/macOS
export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERRORKonfirmasi pengaturan variabel lingkungan:
Windows
echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%Linux/macOS
echo $ALIBABA_CLOUD_SDK_LOG_LEVELJalankan 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
ERRORatau lebih tinggi.
Untuk mengubah tingkat log untuk debugging atau pengembangan, Anda dapat mengubah nilai variabel lingkungan menjadi
DEBUGatauINFO.
Tanda tangan yang ditentukan tidak cocok dengan perhitungan kami.

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:
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.
Tingkatkan versi
commons-codecuntuk menghindari potensi kesalahan perhitungan signature:
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 installGradle
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 buildJika 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:
Masuk ke konsol manajemen layanan yang sesuai.
Temukan dan aktifkan fitur yang diperlukan.
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.