Dokumen ini membantu pengembang mengintegrasikan dan menggunakan Java SDK dengan cepat serta menjawab pertanyaan umum untuk mendukung operasi terkait secara akurat dan efisien.
Pemeriksaan lingkungan
Pastikan lingkungan Java telah terinstal dengan benar dan versi Java adalah 1.8 atau 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 impor dependensi Maven: Tidak dapat menemukan artefak 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 menggunakan Maven di IDEA.
Cara menghindari pesan peringatan 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".
Gagal mengambil kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX
Masalah pengiriman parameter AK.
Gejala: Terjadi error saat kode dijalankan. Jika pesan error berisi informasi berikut, AccessKey tidak diatur 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 yang dikembalikan kosong atau salah, atur ulang. Untuk informasi selengkapnya, lihat Konfigurasikan variabel lingkungan pada Linux, macOS, dan Windows.
Periksa kode untuk mencari kesalahan terkait AccessKey.
Contoh kesalahan umum:
Config config = new Config() .setAccessKeyId(System.getenv("yourAccessKeyID")) .setAccessKeySecret(System.getenv("yourAccessKeySecret"));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 menyematkan AccessKey secara langsung dalam kode produksi Anda. Hal ini dapat menyebabkan risiko keamanan.
unable to get credentials from any of the providers in the chain : ...
Penyebab: Anda menggunakan kredensial default dalam proyek Anda, seperti yang ditunjukkan pada contoh kode berikut. Error ini terjadi karena tidak ada kredensial yang didukung oleh penyedia kredensial default yang dikonfigurasi.
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:
Untuk menggunakan AccessKey secara langsung dalam kode, lihat contoh berikut:
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // Contoh ini menunjukkan cara memperoleh ID AccessKey dari variabel lingkungan. .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Contoh ini menunjukkan cara memperoleh 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 perlu mengonfigurasi kredensial apa pun yang didukung oleh rantai penyedia kredensial default.
kode 403, Anda tidak berwenang untuk melakukan operasi ini. Action: xxxx.

Penyebab masalah ini adalah pengguna RAM, peran, atau grup pengguna yang memanggil API belum diberikan izin yang diperlukan untuk melakukan operasi API tersebut. Action:XXXX dalam pesan error menunjukkan operasi API spesifik yang sedang Anda coba panggil. Misalnya, Action:dysms:SendSms menunjukkan bahwa Anda mencoba memanggil operasi SendSms dari Layanan Pesan Singkat, tetapi akun saat ini tidak memiliki izin yang diperlukan. Anda harus memberikan izin untuk mengirim pesan teks kepada pengguna RAM.
Solusi:
Hubungi pengguna RAM dengan izin administrator untuk membuat kebijakan kustom berdasarkan dokumen kebijakan berikut. Untuk informasi selengkapnya, lihat Buat kebijakan kustom.
CatatanKebijakan ini hanya memberikan izin untuk memanggil operasi
SendSmsdari Layanan Pesan Singkat (dysms). Anda harus menggantinya berdasarkan pesan error aktual.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dysms:SendSms", "Resource": "*" } ] }Berikan izin kepada pengguna RAM. Untuk informasi selengkapnya, lihat dokumen berikut:
Kesalahan impor dependensi Maven: Tidak dapat menemukan artefak com.aliyun:XX:XX
Deskripsi:
Saat Anda mengimpor dependensi dalam proyek Maven, pesan error menunjukkan bahwa dependensi tersebut tidak dapat ditemukan.
Solusi:
Konfigurasikan alamat repositori pusat Maven dalam proyek. Hal ini memberi tahu Maven repositori jarak jauh mana yang harus digunakan untuk mengunduh dependensi saat membangun proyek. Anda dapat menggunakan salah satu dari dua metode konfigurasi berikut:
Tambahkan konten berikut ke
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
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 Struktur Proyek. Pilih Modul. Di bagian Tingkat Bahasa (Language Level) di sebelah kanan, pilih versi yang konsisten dengan versi JDK yang Anda gunakan. Misalnya, jika Anda menggunakan JDK 8, pilih "8 - Lambdas, type annotations etc." untuk Tingkat Bahasa. Klik Terapkan (Apply), lalu klik OK.

java: Kompilasi gagal: kesalahan kompiler java internal.
Di bilah menu IntelliJ IDEA, klik File > Pengaturan (Settings) > Build, Execution, Deployment > Compiler > Java Compiler. Untuk versi bytecode Proyek (Project bytecode version) dan versi bytecode Target (Target bytecode version), pilih versi yang konsisten dengan versi JDK yang Anda gunakan. Misalnya, jika Anda menggunakan JDK 8, pilih 8 untuk kedua item tersebut. Klik Terapkan (Apply), lalu klik OK.

kode: 400, <CERTAIN_FIELD > wajib untuk aksi ini.
Penyebab masalah ini adalah parameter yang diperlukan tidak ditentukan saat Anda memanggil API. Solusi:
Contoh ini menunjukkan cara memanggil operasi SendSms dari Layanan Pesan Singkat:
Buka halaman Debugging API Portal OpenAPI dan pilih layanan Alibaba Cloud serta operasinya.
Periksa dengan cermat bahwa semua bidang yang diperlukan, seperti nomor telepon dan tanda tangan, telah diisi dalam objek permintaan yang dibuat, seperti
SendSmsRequest.Merujuk pada dokumentasi API untuk mengonfirmasi parameter yang diperlukan. Pastikan nilai parameter yang diperlukan benar.
Pastikan nilai parameter yang diperlukan benar. Misalnya, periksa apakah format nomor telepon valid.
Sebelum Anda memanggil API, SDK secara otomatis memverifikasi parameter. Jika parameter yang diperlukan hilang, Anda akan menerima pesan error seperti
MissingRequiredParameter. Misalnya, jika parameter nomor telepon hilang, pesan error "MissingPhoneNumbers: kode: 400" dikembalikan.

SendSmsRequest sendSmsRequest = new SendSmsRequest()
// Ganti ini dengan nomor telepon yang menerima pesan teks.
.setPhoneNumbers("<YOUR_VALUE>")
// Ganti ini dengan tanda tangan SMS Anda.
.setSignName("<YOUR_VALUE>")
// Ganti ini 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 terlalu lama 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. Hal ini dapat menyebabkan versi dependensi yang lebih rendah dimuat saat runtime.
Dependensi tidak diperbarui: Setelah versi dependensi diperbarui, proyek tidak dibangun ulang atau cache tidak dihapus, sehingga versi lama tetap 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 bahwa classpath benar dengan merujuk pada contoh yang disediakan di Portal OpenAPI Alibaba Cloud.
Jika classpath benar, Anda dapat mengambil kelas spesifik tempat error terjadi dari informasi stack pengecualian, lalu menemukan dependensi dan versi yang sesuai.
Jalankan perintah berikut untuk melihat dependensi langsung dan transitif proyek, beserta konflik dan duplikasi spesifiknya.
Maven: Maven menggunakan kebijakan "jalur terpendek lebih dulu" dan "urutan deklarasi lebih dulu" secara default untuk menentukan versi dependensi yang akan digunakan. Oleh karena itu, Anda dapat menyelesaikan konflik dengan menyesuaikan urutan dependensi.
mvn dependency:tree -DverboseGradle: Gradle menggunakan kebijakan "versi tertinggi lebih dulu" secara default untuk penyelesaian konflik. Oleh karena itu, hanya kasus versi usang yang ada. Lanjutkan ke langkah 4 untuk mendapatkan versi terbaru dependensi.
Dalam pohon dependensi keluaran, periksa adanya konflik antara dependensi dan dependensi induknya. Jika ada konflik, pindahkan versi tertinggi dependensi atau dependensi induknya ke bagian atas bagian <dependencies></dependencies> dalam pom.xml. Setelah menjalankan
mvn clean install -Uuntuk membangun ulang, lanjutkan ke langkah berikutnya jika error masih berlanjut.Temukan versi terbaru dependensi yang sesuai dari Paket dependensi umum Java SDK V2.0 dan tentukan versi terbaru 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:
Misalnya, informasi pengecualian adalah java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential().
Setelah memeriksa, Anda memastikan bahwa classpath benar.
Pengecualian terjadi di kelas
com.aliyun.credentials.Client, yang merupakan bagian dari dependensicredentials-java. Versi saat ini adalah0.2.4.Setelah menjalankan
mvn dependency:tree -Dverbose, Anda menemukan bahwa dependensi induktea-openapidaricredentials-javamengalami konflik versi. Versi yang saat ini dirujuk adalah0.3.2, dan versi yang bertentangan adalah0.3.8. Kami menyarankan agar Anda memindahkan dependensi induk yang sesuai dengan versi0.3.8daritea-openapike 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 mengambil versi terbaru
credentials-javadari Maven Central: com.aliyun:credentials-java dan menambahkan dependensi tersebut secara manual ke 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 berbagai faktor. Berikut adalah beberapa penyebab umum dan solusinya:
Masalah konektivitas jaringan
Deskripsi: Jaringan antara klien dan server terputus atau tidak stabil, sehingga permintaan gagal mencapai server tujuan.
Solusi:
Gunakan perintah ping atau curl untuk menguji konektivitas antara host lokal dan Titik Akhir (Endpoint) layanan Alibaba Cloud. Misalnya, saat terjadi timeout saat memanggil operasi SendSms, gunakan ping dysmsapi.aliyuncs.com atau curl -v https://dysmsapi.aliyuncs.com untuk menguji konektivitas.
Jika eksekusi perintah mengalami timeout atau tidak ada respons, periksa keberadaan kebijakan pemblokiran di firewall lokal atau router.
Jika perintah menerima respons, kami menyarankan agar Anda mengatur periode timeout yang wajar untuk mencegah kegagalan permintaan akibat konfigurasi yang tidak tepat. Untuk informasi selengkapnya, lihat Mekanisme timeout. Berikut adalah contoh kode:
// Pengaturan timeout parameter runtime, yang hanya berlaku untuk permintaan yang menggunakan instance parameter runtime.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 5000;Waktu pemrosesan API yang lama
Deskripsi: Waktu yang dibutuhkan oleh 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 permintaan saat ini dengan mengonfigurasi parameter periode timeout baca. Berikut adalah contoh kode:
// Pengaturan timeout parameter runtime, yang hanya berlaku untuk permintaan yang menggunakan instance parameter runtime.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.readTimeout = 10000;Permintaan Anda ditolak karena kurangnya perlindungan ssl.RequestId .
Masalah ini terjadi karena operasi memerlukan pemanggilan melalui protokol HTTPS, tetapi Anda menggunakan protokol HTTP.
Solusi:
Untuk SDK V1.0, Anda dapat mengatur permintaan agar dikirim melalui protokol HTTPS untuk 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 jenis error ini mungkin karena Anda menentukan Endpoint atau RegionId yang salah saat memanggil API layanan Alibaba Cloud. Solusinya sebagai berikut:
Pastikan wilayah yang Anda pilih mendukung layanan yang Anda panggil. Anda dapat menemukan Endpoint layanan Alibaba Cloud di halaman utama layanan tersebut di Portal Pengembang OpenAPI. Contoh ini menggunakan Layanan Pesan Singkat.
Kode respons tak terduga untuk CONNECT: 400.
Penyebab masalah ini adalah permintaan tidak dikirim ke gerbang Alibaba Cloud dan diblokir oleh node perantara.
Solusi:
Layanan proxy mungkin dikonfigurasi secara salah, artinya layanan proxy tidak dapat meneruskan permintaan ke gerbang Alibaba Cloud dengan benar. Anda dapat menggunakan curl untuk memeriksa apakah konfigurasi proxy benar: `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 internal. Di lingkungan lokal Anda, Anda dapat mencoba mengganti lingkungan jaringan untuk pengujian, misalnya dengan menghubungkan ke hotspot jaringan seluler.
Tidak dapat mengatur bidang java.lang.String com.aliyun.imm20200930.models.GenerateWebofficeTokenShrinkRequest.userShrink ke java.util .
Penyebab masalah ini adalah versi paket Tea yang lebih lama tidak dapat mengubah struktur kompleks menjadi String, sehingga menyebabkan error.
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 menggunakan 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...", pilih "Invalidate and Restart" di kotak dialog yang muncul, dan tunggu hingga IDEA membersihkan cache dan memulai ulang.

Periksa konektivitas jaringan
Jika Maven tidak dapat terhubung ke repositori pusat atau repositori jarak jauh lainnya, Maven mungkin tidak dapat mengunduh dependensi. Pastikan konektivitas 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 peringatan yang disebabkan oleh refleksi.

Saat Anda menggunakan Alibaba Cloud SDK untuk pengembangan dengan versi JDK yang lebih baru, Anda mungkin mengalami pesan peringatan terkait refleksi. Pesan peringatan ini dapat memengaruhi keluaran program, terutama saat Anda ingin menghindari informasi log yang tidak perlu di lingkungan produksi.
Solusi:
Anda dapat mengatur variabel lingkungan ALIBABA_CLOUD_SDK_LOG_LEVEL ke ERROR untuk menekan pesan peringatan. Prosedurnya sebagai berikut:
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. Pesan peringatan yang dihasilkan oleh Alibaba Cloud SDK tidak akan ditampilkan. Anda hanya akan melihat informasi log pada 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 masalah ini biasanya karena tanda tangan permintaan tidak cocok dengan tanda tangan yang dihitung oleh server. Penyebab yang mungkin, namun tidak terbatas pada, meliputi:
AccessKey (AK) disalin secara salah.
Algoritma tanda tangan yang salah digunakan.
Parameter permintaan atau urutannya tidak memenuhi persyaratan API.
Solusi:
Pastikan AccessKey dan rahasia AccessKey yang diatur dalam kode persis sama dengan yang Anda peroleh dari konsol. Periksa adanya spasi tambahan atau karakter khusus. Untuk melihat AccessKey, lihat Lihat informasi AccessKey pengguna RAM.
Tingkatkan versi
commons-codecuntuk menghindari potensi kesalahan perhitungan tanda tangan:
Perbarui dependensi:
Maven
Modifikasi 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
Tambahkan atau perbarui dependensi dalam file
build.gradle:dependencies { implementation 'commons-codec:commons-codec:1.15' // Versi yang diperbarui }Jalankan perintah berikut untuk membangun proyek:
gradle buildJika Anda menggunakan tanda tangan kustom, periksa dengan cermat apakah logika kode konsisten dengan logika yang dijelaskan dalam Mekanisme badan permintaan dan tanda tangan V3.
SDK.EndpointResolvingError: "Tidak ada wilayah 'cn-XX'. Harap periksa ID wilayah Anda".
Penyebab masalah ini adalah versi SDK terlalu lama sehingga tidak mendukung pemanggilan wilayah atau operasi 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 masalah ini adalah penggunaan versi pustaka Apache HttpClient yang tidak kompatibel dengan Alibaba Cloud SDK, sehingga menyebabkan error. Solusi:
Jika proyek menggunakan beberapa pustaka dependensi, pastikan tidak ada pustaka lain yang memperkenalkan versi HttpClient yang tidak kompatibel. Anda dapat memeriksanya secara manual atau menggunakan fitur manajemen dependensi dari alat build Anda.
Versi Apache HttpClient terlalu lama. Kami menyarankan agar Anda memperbaruinya ke versi 4.5.14 atau lebih baru.
<dependency> <groupId>org.apache.httpcomponents.client</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> <!-- Harap periksa versi terbaru --> </dependency>
Kode error 401 'Anda belum mengaktifkan layanan XXX' atau pesan serupa dilaporkan saat Anda memanggil operasi OpenAPI.
Error ini menunjukkan bahwa akun Alibaba Cloud yang Anda gunakan belum mengaktifkan atau mengaktifkan layanan yang sesuai. XXX menunjukkan nama layanan spesifik, seperti layanan OCR. Solusi:
Login ke konsol manajemen untuk layanan yang sesuai.
Temukan dan aktifkan fitur yang diperlukan.
Tunggu hingga layanan berlaku, lalu panggil operasi tersebut lagi.
Gagal memperoleh kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX
Kredensial peran RAM instans untuk instans ECS (ecs_ram_role) hanya dapat digunakan di instans ECS atau ECI, dan peran RAM harus dikaitkan dengan instans tersebut. Untuk informasi selengkapnya, lihat Peran RAM Instans dan Gunakan peran RAM instans dengan memanggil API.
Untuk memverifikasi apakah Anda dapat menggunakan kredensial ini dalam proyek Anda, Anda dapat menjalankan perintah berikut di instans ECS:
Instans Linux
# Peroleh token akses metadata. Anda harus menetapkan periode validitas. Header X-Forwarded-For tidak boleh disertakan. 100.100.100.200 menunjukkan 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:<Periode validitas token akses metadata>"` # 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)
# Peroleh token akses metadata. Anda harus menetapkan periode validitas. Header X-Forwarded-For tidak boleh disertakan. 100.100.100.200 menunjukkan alamat IPv4 layanan metadata instans. $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<Periode validitas token akses metadata>"} -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 untuk instans ECS (ecs_ram_role) di dalam instans tersebut.
{ "AccessKeyId" : "AccessKeyIdValue", "AccessKeySecret" : "AccessKeySecretValue", "Expiration" : "2025-07-10T08:37:58Z", "SecurityToken" : "SecurityTokenValue", "LastUpdated" : "2025-07-10T02:33:26Z", "Code" : "Success" }Untuk beralih ke kredensial lainnya, lihat Kelola kredensial akses.
Ada risiko kebocoran AccessKey ini
Penyebab: Saat informasi yang dikembalikan berisi prompt ini, berarti AccessKey (AK) Anda mungkin berisiko bocor, dan Alibaba Cloud telah memberlakukan pembatasan perlindungan pada AK tersebut.
Solusi: Lihat Solusi untuk kebocoran pasangan AccessKey.
Permintaan ditolak karena pengendalian alur api
Penyebab: Frekuensi tinggi pemanggilan SDK dapat menyebabkan server mengembalikan error, seperti "ThrottlingException".
Solusi:
Terapkan mekanisme percobaan ulang permintaan dan tingkatkan interval waktu antar permintaan untuk mengurangi beban server.
Optimalkan logika kode dan 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 untuk membatasi alamat IP sumber untuk permintaan API yang menggunakan AccessKey permanen.
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: Konfigurasi parameter yang salah dapat menyebabkan layanan gagal atau mengembalikan error. Contohnya adalah pengaturan regionId yang salah.
Solusi:
Berdasarkan dokumentasi dan contoh kode yang disediakan oleh Alibaba Cloud, pastikan semua parameter konfigurasi, seperti Endpoint, RegionId, dan parameter permintaan lainnya, diisi dengan benar.
Anda dapat melakukan debugging API di Portal Pengembang OpenAPI. Setelah debugging berhasil, Anda dapat mengunduh kode proyek contoh lengkap untuk debugging lokal.
Tabel pemeriksaan mandiri untuk pengecualian Java dasar
Pesan kesalahan | Penyebab | Solusi |
NullPointerException | Upaya memanggil metode atau mengakses properti pada objek null. | Sebelum menggunakan objek, lakukan pemeriksaan null untuk mencegah NullPointerException. Anda dapat menggunakan pernyataan kondisional atau assertion untuk melakukan pemeriksaan ini. |
ArrayIndexOutOfBoundsException | Upaya 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 mencegah pengecualian indeks-array-di-luar-batas. |
IllegalArgumentException | Parameter ilegal diteruskan ke metode. | Periksa parameter yang diteruskan ke metode untuk memastikan bahwa parameter tersebut memenuhi persyaratan metode. Anda dapat menggunakan pernyataan kondisional atau assertion untuk memeriksa validitas parameter. |
ArithmeticException | Terjadi pengecualian dalam operasi aritmetika, seperti pembagian dengan 0. | Sebelum melakukan operasi aritmetika, lakukan pemeriksaan yang diperlukan untuk memastikan tidak terjadi pengecualian. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian aritmetika. |
ClassCastException | Upaya mengonversi objek ke tipe yang tidak kompatibel. | Sebelum melakukan konversi tipe, gunakan operator instanceof untuk memeriksa tipe guna memastikan bahwa tipe objek kompatibel. Jika tipe tidak kompatibel, pertimbangkan untuk menggunakan konversi tipe yang sesuai atau mendesain ulang hubungan pewarisan objek. |
FileNotFoundException | Upaya 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 I/O, seperti membaca atau menulis file, atau komunikasi jaringan. | Periksa kebenaran operasi I/O, pastikan file atau sumber daya tersedia, dan tangani kemungkinan pengecualian. Anda dapat menggunakan mekanisme penanganan pengecualian untuk menangani pengecualian I/O. |
InterruptedException | Selama operasi multi-thread, thread terganggu secara tak terduga. | Saat menangani operasi multi-thread, tangani gangguan thread secara tepat. Anda dapat menggunakan mekanisme penanganan pengecualian atau pernyataan kondisional untuk menangani gangguan thread. |
NoSuchMethodException | Upaya 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 | Upaya mengonversi string yang tidak dapat dikonversi menjadi angka menjadi angka. | Saat mengonversi string menjadi angka, lakukan pemeriksaan untuk memastikan bahwa string tersebut dapat dikonversi dengan benar. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian format-angka. |
IndexOutOfBoundsException | Upaya 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 | Upaya memanggil metode atau operasi yang tidak didukung. | Merujuk pada dokumentasi atau dokumentasi API untuk memahami metode dan operasi yang didukung. Pastikan metode atau operasi tersebut layak dilakukan di lingkungan saat ini. |
IllegalMonitorStateException | Metode wait(), notify(), atau notifyAll() dipanggil pada waktu yang tidak tepat. | Pastikan metode wait(), notify(), atau notifyAll() digunakan dengan benar dalam blok kode synchronized. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian status-monitor-ilegal. |
SecurityException | Upaya melakukan operasi yang melanggar aturan keamanan, seperti akses tidak sah atau izin file. | Periksa aturan keamanan dalam kode untuk memastikan tidak ada pelanggaran aturan keamanan. Anda dapat melakukan penyesuaian dan modifikasi berdasarkan aturan keamanan tersebut. |
ClassNotFoundException | Upaya memuat kelas yang tidak ada. | Dalam SDK, hal ini umumnya disebabkan oleh konflik dependensi. Koeksistensi beberapa versi dependensi 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 | Upaya mengakses bidang yang tidak ada. | Dalam SDK, hal ini umumnya disebabkan oleh konflik dependensi. Dependensi usang mendahului indeks, sehingga 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 untuk masalah di atas dimaksudkan untuk membantu Anda menggunakan Alibaba Cloud SDK dengan lebih mudah. Jika Anda mengalami masalah lain, Anda dapat menghubungi 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 insinyur dukungan teknis Alibaba Cloud. Nomor grupnya adalah 60965016010.