Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud SDK:Java SDK FAQ

Son Güncelleme:Oct 07, 2026

Alibaba Cloud Java SDK entegrasyonu ve kullanımıyla ilgili sık sorulan sorular ve çözümler.

Ortam kontrolü

  • Java 1.8 veya üzeri yüklüdür.

  • Ağınız Alibaba Cloud API uç noktalarına erişebilir durumdadır.

Yaygın sorunlar

AK parametresi iletim sorunları.

Hata iletiniz aşağıdakilerden birini içeriyorsa AccessKey doğru yapılandırılmamış demektir:

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

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

Çözüm:

  1. ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET değerlerinin ayarlandığını doğrulayın:

    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%

    Doğru değerler döndürülüyorsa yapılandırma başarılı olmuştur. Aksi takdirde, bu ortam değişkenlerini Linux, macOS ve Windows sistemlerinde ortam değişkenlerini yapılandırma bölümünde açıklandığı gibi yeniden yapılandırın.

  2. Kodunuzda AK ile ilgili hataları kontrol edin.

    Yaygın yanlış örnek:

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

    Doğru örnek:

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

    System.getenv(), AccessKey ID ve Secret değerlerini ortam değişkenlerinizden alır.

    Önemli

    AccessKey bilgilerinizi çevrimiçi kod içinde sabit kodlamayın. Bu uygulama güvenlik riski oluşturur.

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

Neden: Projeniz varsayılan kimlik bilgisi sağlayıcısını (aşağıda gösterildiği gibi) kullanır ancak desteklenen kimlik bilgisi türlerinden hiçbiri yapılandırılmamıştır.

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

Çözüm:

  • AccessKey'i doğrudan kullanmak için:

    com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
            // This example shows how to get the AccessKey ID from an environment variable.
            .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
            // This example shows how to get the AccessKey secret from an environment variable.
            .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

    Diğer kimlik bilgisi türleri için bkz. Erişim kimlik bilgilerini yönetme.

  • Varsayılan kimlik bilgisini kullanmaya devam etmek için varsayılan kimlik bilgisi sağlayıcı zinciri tarafından desteklenen kimlik bilgisi türlerinden herhangi birini yapılandırmanız gerekir.

code 403, You are not authorized to do this operation. Action: xxxx.

D:\program_files\java\bin\java.exe ...
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
code: 403, You are not authorized to do this operation. Action: dysms:SendSms;Resource: acs:dysms::1360982977xxx:* request id: 70BA0B34-E61C-58C7-988B-4E20151492C3
https://api.alibabacloud.com/troubleshoot?q=NoPermission&product=Dysmsapi&requestId=70BA0B34-E61C-58C7-988B-4E20151492C3

API'yi çağıran RAM kullanıcısı, rolü veya kullanıcı grubunda gerekli izin eksiktir. Hata iletisindeki Action:XXXX değeri reddedilen API işlemini belirtir. Örneğin, Action:dysms:SendSms ifadesi hesabın Short Message Service SendSms API'sini çağırma iznine sahip olmadığını gösterir.

Çözüm:

  1. Aşağıdaki belgeye göre özel bir izin ilkesi oluşturması için bir yöneticiyle iletişime geçin. Özel izin ilkesi oluşturma.

    Not

    Bu ilke yalnızca Short Message Service (dysms) için SendSms çağrılarına izin verir. Action değerini hata iletinizdeki hizmet ve API ile değiştirin.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendSms",
          "Resource": "*"
        }
      ]
    }
  2. RAM hesabına izinler atayın:

Maven bağımlılıklarını içe aktarırken hata: Could not find artifact com.aliyun:XX:XX

Açıklama:

Maven belirtilen bağımlılığı bulamıyor.

Çözüm:

Projenizde Maven merkezi deposunu aşağıdaki yöntemlerden birini kullanarak yapılandırın:

  • Aşağıdaki içeriği pom.xml dosyasına ekleyin:

    <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>
  • Aşağıdaki içeriği settings.xml dosyasına ekleyin:

    <settings>
        <!-- Existing settings -->
        
        <mirrors>
            <mirror>
                <!-- This id can be any unique identifier -->
                <id>central</id>
                <mirrorOf>central</mirrorOf>
                <name>Maven Central Mirror</name>
                <url>https://repo1.maven.org/maven2</url>
            </mirror>
        </mirrors>
    </settings>

java: Error: release version X not supported.

IntelliJ IDEA'da Proje Yapısını açmak için Ctrl+Alt+Shift+S tuşlarına basın. Modüller'i seçin ve Dil Düzeyi'ni JDK sürümünüzle eşleşecek şekilde ayarlayın (örneğin, JDK 8 için "8 - Lambdas, type annotations etc."). Uygula'yı ve ardından Tamam'ı tıklayın.

java: Compilation failed: internal java compiler error.

IntelliJ IDEA'da Dosya > Ayarlar > Derleme, Yürütme, Dağıtım > Derleyici > Java Derleyicisi yolunu izleyin. Proje bayt kodu sürümü ve Hedef bayt kodu sürümü değerlerinin her ikisini de JDK sürümünüzle eşleşecek şekilde ayarlayın (örneğin, JDK 8 için 8). Uygula'yı ve ardından Tamam'ı tıklayın.

code: 400, <CERTAIN_FIELD > is mandatory for this action.

API çağrısında gerekli bir parametre eksik. Çözüm:

Short Message Service SendSms API'sini kullanan örnek:

  • OpenAPI Portalındaki API hata ayıklama sayfasına gidin ve cloud ürününü ile API'yi seçin.

  • Telefon numarası ve imza gibi tüm gerekli alanların doldurulduğundan emin olmak için SendSmsRequest gibi oluşturulan istek nesnesini dikkatlice karşılaştırın.

  • Gerekli parametreleri onaylamak için API belgelerini kontrol edin.

  • Gerekli parametre değerlerinin geçerli olduğundan emin olun (örneğin, telefon numarası biçiminin doğru olup olmadığını kontrol edin).

  • SDK, API'yi çağırmadan önce parametreleri doğrular. Gerekli bir parametre eksikse MissingRequiredParameter hatası alırsınız. Örneğin, eksik bir telefon numarası "MissingPhoneNumbers: code: 400" hatasını döndürür.

SendSmsRequest sendSmsRequest = new SendSmsRequest()
        // Replace with the phone number that will receive the text message.
        .setPhoneNumbers("<YOUR_VALUE>")
        // Replace with your SMS signature.
        .setSignName("<YOUR_VALUE>")
        // Replace with your SMS template code.
        .setTemplateCode("<YOUR_VALUE>");

java.lang.NoSuchMethodError, java.lang.NoSuchFieldError

Neden:

Bu özel durum, Java çalışma zamanı var olmayan bir yöntemi çağırdığında veya bir alana eriştiğinde oluşur. Yaygın nedenler:

  • Maven pom.xml veya Gradle build.gradle dosyanızda güncel olmayan bağımlılık sürümü.

  • Bağımlılık çakışması: Aynı bağımlılığın birden çok sürümü mevcut olduğunda çalışma zamanında daha düşük bir sürüm yüklenir.

  • Eski önbellek: Bir bağımlılık güncellendikten sonra proje yeniden derlenmemiş veya önbellek temizlenmemiştir.

  • Derleme zamanı ve çalışma zamanı bağımlılık sürümleri farklıdır.

  • Classpath çakışması: İçe aktarma sırasında yanlış classpath seçilmiştir.

Çözüm:

  1. classpath'te hata olup olmadığını görmek için Alibaba Cloud OpenAPI Portalı içinde verilen örneği kontrol edin.

  2. Classpath doğruysa hataya neden olan belirli sınıfı özel durum yığın bilgilerinden elde edebilir ve karşılık gelen bağımlılığı ile sürümü bulabilirsiniz.

  3. Projedeki doğrudan ve dolaylı bağımlılıkları belirli çakışmalar ve yinelenmelerle birlikte görüntülemek için aşağıdaki komutu çalıştırın.

    • Maven: Maven, bağımlılık sürümlerini çözmek için "en kısa yol ilk" ve "bildirim sırası ilk" ilkelerini kullanır. Bağımlılık sırasını ayarlayarak çakışmaları çözün.

      mvn dependency:tree -Dverbose
    • Gradle: Gradle varsayılan olarak "en yüksek sürüm ilk" ilkesini kullanır, bu nedenle yalnızca eski sürümler sorunlara neden olur. En son sürümü almak için 4. adıma geçin.

  4. Bağımlılık ağacı çıktısında çakışmaları kontrol edin. Varsa, çakışan bağımlılığın en yüksek sürümünü pom.xml dosyasındaki <dependencies></dependencies> bölümünün en üstüne taşıyın. Yeniden derlemek için mvn clean install -U komutunu çalıştırın. Hata devam ederse aşağıdaki adımlara devam edin.

  5. Bağımlılığın en son sürümünü V2.0 Java SDK ortak bağımlılık paketleri bölümünde bulun. pom.xml veya build.gradle dosyanızdaki sürümü güncelleyin.

  6. Projeyi temizleyin ve yeniden derleyin:

    • Maven

      mvn clean install -U
    • Gradle:

      gradle clean build --refresh-dependencies
  7. Sorunun çözüldüğünü doğrulayın.

Örnek:

Özel durum iletisi java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential() şeklindedir.

  1. Kontrol edildiğinde classpath doğrudur.

  2. Özel durum iletisine göre özel durum com.aliyun.credentials.Client sınıfında oluşmuştur. Bu sınıf credentials-java bağımlılığındadır. Şu anda başvurulan sürüm 0.2.4 sürümüdür.

  3. mvn dependency:tree -Dverbose komutu çalıştırıldığında üst bağımlılık credentials-java bağımlılığı tea-openapi içinde bir sürüm çakışması olduğu görülmektedir. Şu anda başvurulan sürüm 0.3.2 olup çakışan sürüm 0.3.8 sürümüdür. tea-openapi 0.3.8 sürümüne karşılık gelen üst bağımlılığı <dependencies></dependencies> bölümünün en üstüne taşımanızı öneririz.

  4. Projeyi temizlemek ve yeniden derlemek için mvn clean install -U komutunu çalıştırın ve sorunun çözüldüğünü doğrulayın.

  5. Sorun devam ederse credentials-java öğesinin en son sürümünü Maven Central: com.aliyun:credentials-java adresinden alabilir ve bağımlılığı pom.xml dosyasına manuel olarak ekleyebilirsiniz.

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

Zaman aşımı sorunlarının birkaç yaygın nedeni vardır:

Ağ bağlantısı sorunları

İstemciniz ile sunucu arasındaki ağ bağlantısı kesilmiş veya kararsızdır.

Çözüm:

Cloud product uç noktasına olan bağlantıyı ping veya curl kullanarak test edin. Örneğin, SendSms API'si zaman aşımına uğrarsa: ping dysmsapi.aliyuncs.com veya curl -v https://dysmsapi.aliyuncs.com.

  • Komut zaman aşımına uğrarsa güvenlik duvarınızda veya yönlendiricinizde engelleyen politikaları kontrol edin.

  • Komut başarılı olursa başarısızlıkları önlemek için makul bir zaman aşımı yapılandırın. Bkz. Zaman aşımı mekanizması. Örnek:

// Runtime parameter timeout setting. This is effective only for requests that use this runtime parameter instance.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 5000;

Uzun API işleme süresi

API işleme süresi yapılandırılan okuma zaman aşımını aşıyor.

Çözüm: Okuma zaman aşımını artırın. Bkz. Zaman aşımı mekanizması. Örnek:

// Runtime parameter timeout setting. This is effective only for requests that use this runtime parameter instance.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.readTimeout = 10000;

Your request is denied as lack of ssl protect. RequestId .

API HTTPS gerektirir ancak isteğiniz HTTP kullanmıştır.

Çözüm:

  • V1.0 SDK için Request nesnesinde HTTPS protokolünü ayarlayın:

    request.setSysProtocol(com.aliyuncs.http.ProtocolType.HTTPS);
  • Varsayılan olarak HTTPS kullanan V2.0 SDK'yı kullanın.

code: 404, Specified api is not found, please check your url and method.

Yanlış Endpoint veya RegionId girdiniz. Çözüm:

Bölgenizin hedef hizmeti desteklediğini doğrulayın. Ürünün uç noktasını OpenAPI Geliştirici Portalı ana sayfasında bulun.

Örneğin, Short Message Service için Alibaba Cloud OpenAPI portalına giriş yapın, ürün sayfasına gidin ve doğru bölge kimliğini ile hizmet adresini onaylamak için Service Region List öğesini kontrol edin. SMS hizmeti Endpoint modeli [product_code].[region_id].aliyuncs.com şeklindedir. Yerel bölgeler (cn-beijing, cn-hangzhou, cn-shanghai vb.) için hizmet adresi tek tip olarak dysmsapi.aliyuncs.com şeklindedir.

Unexpected response code for CONNECT: 400.

İstek bir ara düğüm tarafından engellendi ve Alibaba Cloud ağ geçidine ulaşmadı.

Çözüm:

  • Proxy yapılandırması yanlış olabilir. Test etmek için şunu kullanın: curl https://<Alibaba Cloud hizmet alan adı>/ -v -x <proxy IP>:<proxy port> (örneğin, curl https://ecs-cn-hangzhou.aliyuncs.com/ -v -x 127.0.0.1:3128).

  • Dahili bir güvenlik duvarı isteği engelliyor olabilir. Ağları değiştirmeyi deneyin (örneğin, mobil热点'a bağlanın).

Can not set java.lang.String field com.aliyun.imm20200930.models.GenerateWebofficeTokenShrinkRequest.userShrink to java.util .

Eski bir Tea paketi sürümü karmaşık bir yapıyı String'e dönüştüremediğinden bu hata oluşur.

Çözüm:

Tea paketini 1.2.7 veya üzeri bir sürüme yükseltin:

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

IDEA'da Maven ile bağımlılıklar otomatik olarak indirilemedi.

  • Maven deposunu güncelleyin

    "Dosya" menüsünü açın ve "Ayarlar"ı (veya "Tercihler") seçin. Soldaki gezinme bölmesinde "Derleme, Yürütme, Dağıtım" öğesini genişletin ve ardından "Derleme Araçları" > "Maven" öğesini seçin. "Depolar" sekmesini bulun, yerel depoyu seçin, "Güncelle" düğmesini tıklayın ve güncellemeyi tamamlamasını bekleyin.

  • IDEA önbelleğini kontrol edin

    "Dosya" menüsünü açın, "Önbellekleri Geçersiz Kıl..." seçeneğini belirleyin. Görüntülenen iletişim kutusunda "Geçersiz Kıl ve Yeniden Başlat" seçeneğini belirleyin ve IDEA'nın önbelleği temizlemesini ve yeniden başlamasını bekleyin.

  • Ağ bağlantısını kontrol edin

    Maven merkezi depoya veya diğer uzak depolara bağlanamazsa bağımlılıkları indiremeyebilir. Ağ bağlantınızın normal olduğundan ve güvenlik duvarlarının veya proxy sunucularının Maven erişimini engellemediğinden emin olun.

  • Maven yapılandırmasını kontrol edin

    Maven yapılandırma dosyasının (genellikle settings.xml) doğru yapılandırıldığından emin olun. "localRepository" öğesinin doğru yerel depo yoluna işaret ettiğinden ve "mirrors", "proxies" ile "profiles" öğelerinin doğru yapılandırıldığından emin olun.

Yansıma nedeniyle oluşan WARNING mesajlarından nasıl kaçınılır.

024-11-26 17:05:04.696  INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.s.r.i.ResourceMonitorServiceImpl   : instance=rmq-cn-jte3mmyuu0i
024-11-26 17:05:04.696  INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl   : getInstanceInfo
024-11-26 17:05:04.699  INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl   : tea client
024-11-26 17:05:04.699  INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl   : tea runtime
024-11-26 17:05:04.764  WARN 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] com.aliyun.tea.TeaModel                  : There are some cast events happening. expect: java.lang.Double

Alibaba Cloud SDK'yı daha yüksek bir JDK sürümüyle kullanırken çıkışta yansımayla ilgili uyarılar görünebilir.

Çözüm:

Uyarıları bastırmak için ALIBABA_CLOUD_SDK_LOG_LEVEL ortam değişkenini ERROR olarak ayarlayın:

  1. Ortam değişkenini ayarlayın:

    Windows

    set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR

    Linux/macOS

    export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR
  2. Ortam değişkeni ayarını onaylayın:

    Windows

    echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%

    Linux/macOS

    echo $ALIBABA_CLOUD_SDK_LOG_LEVEL
  3. Uygulamanızı başlatın. Alibaba Cloud SDK'dan gelen uyarı mesajları artık görüntülenmez; yalnızca ERROR düzeyindeki veya daha yüksek düzeydeki mesajlar görünür.

Not
  • Hata ayıklama veya geliştirme için günlük düzeyini değiştirmek üzere ortam değişkeninin değerini DEBUG veya INFO olarak değiştirebilirsiniz.

Specified signature does not match our calculation.

at java.lang.Thread.run(Thread.java:748)
ERROR [pool-3-thread-1] 2024-11-12 17:20:00,059 (AliDmsAuditSyncServiceImpl.java:219) - [MS访问事件同步] 异常
com.aliyun.tea.TeaException: code: 400, Specified signature does not match our calculation. server StringToSign is [ACS3-HMAC-SHA256
3d5cxxx                                                              ], server CanonicalRequest is [POST
/

İstek imzası sunucu tarafındaki hesaplamayla eşleşmiyor. Olası nedenler:

  • AccessKey (AK) yanlış kopyalandı

  • Yanlış imzalama algoritması

  • İstek parametreleri veya sıraları API gereksinimlerini karşılamıyor.

Çözüm:

  1. Kodunuzdaki AccessKey ID ve Secret değerlerinin konsoldakilerle tam olarak eşleştiğini doğrulayın (fazladan boşluk veya özel karakter olmamalıdır). Mevcut bir AccessKey kullanın veya AccessKey çifti oluşturma bölümünden yeni bir tane oluşturun. Not: AccessKey Secret yalnızca oluşturma sırasında bir kez gösterilir.

  2. İmza hesaplama hatalarından kaçınmak için commons-codec öğesini yükseltin.

    Bağımlılığı güncelleyin:

    Maven

    pom.xml dosyasını değiştirin.

    <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
       <version>1.15</version> <!-- Updated version -->
    </dependency>

    Sürüm numarasını güncelledikten sonra aşağıdaki komutu çalıştırın:

    mvn clean install

    Gradle

    build.gradle dosyasında bağımlılığı ekleyin veya güncelleyin:

    dependencies {
         implementation 'commons-codec:commons-codec:1.15' // Updated version
    }

    Projeyi derlemek için aşağıdaki komutu çalıştırın:

    gradle build
  3. Kendi kendine imzalama kullanıyorsanız kod mantığınızın V3 istek gövdesi ve imzalama mekanizması ile eşleştiğini doğrulayın.

SDK.EndpointResolvingError: "No such region 'cn-XX'. Please check your region ID".

SDK sürümü çok eski ve hedef bölgeyi veya API'yi desteklemiyor. Çözüm:

SDK çekirdek bağımlılığını yükseltin:

Maven

Proje yönetimi için Maven kullanıyorsanız pom.xml dosyasındaki bağımlılık sürümünü güncelleyin:

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

Gradle

Proje yönetimi için Gradle kullanıyorsanız build.gradle dosyasındaki bağımlılık sürümünü güncelleyin:

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

Failed to instantiate [com.aliyuncs.IAcsClient]: Factory method 'iAcsClient' threw exception with message: org/apache/http/conn/ssl/DefaultHostnameVerifier .

Alibaba Cloud SDK ile uyumsuz bir Apache HttpClient sürümü kullanılıyor. Çözüm:

  • Derleme aracınızın bağımlılık yönetimini kullanarak başka hiçbir kitaplığın uyumsuz bir HttpClient sürümü eklemediğini kontrol edin.

  • Apache HttpClient'ı 4.5.14 veya üzeri bir sürüme güncelleyin:

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

OpenAPI çağrılırken hata: code: 401, You have not activated the XXX service veya benzer bir mesaj.

Alibaba Cloud hesabınız ilgili hizmeti etkinleştirmedi. XXX hizmet adıdır (örneğin, OCR service). Çözüm:

  1. İlgili hizmetin yönetim konsolunda oturum açın.

  2. Gerekli özelliği bulun ve etkinleştirin.

  3. Hizmetin etkinleştirilmesini bekleyin ve ardından API'yi tekrar çağırın.

ECS meta veri hizmetinden RAM oturum kimlik bilgisi alınamadı. HttpCode=XX

Örnek RAM rolü (ecs_ram_role) kimlik bilgisi yalnızca ekli RAM rolü bulunan bir ECS veya ECI örneğinde kullanılabilir. Bkz. ECS örneği RAM rolü ve API çağırarak ECI örneği RAM rolü kullanma.

  • Bu kimlik bilgisinin çalıştığını doğrulamak için ECS örneğinde aşağıdaki komutu çalıştırın:

    • Linux örneği

      # Get the metadata access credential. You must set an expiration time. The request cannot contain the X-Forwarded-For header. 100.100.100.200 is the IPv4 address of the instance metadata service.
      TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<metadata_credential_expiration_time>"`
      # Access instance metadata
      curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name]
    • Windows örneği (PowerShell)

      # Get the metadata access credential. You must set an expiration time. The request cannot contain the X-Forwarded-For header. 100.100.100.200 is the IPv4 address of the instance metadata service.
      $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
      # Access instance metadata
      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]

    Aşağıdaki yanıt döndürülürse örnek RAM rolü kimlik bilgisi kullanılabilir durumdadır:

    {
      "AccessKeyId" : "AccessKeyIdValue",
      "AccessKeySecret" : "AccessKeySecretValue",
      "Expiration" : "2025-07-10T08:37:58Z",
      "SecurityToken" : "SecurityTokenValue",
      "LastUpdated" : "2025-07-10T02:33:26Z",
      "Code" : "Success"
    }
  • Farklı bir kimlik bilgisi türüne geçmek için bkz. Erişim kimlik bilgilerini yönetme.

Bu AccessKey'in sızdırılma riski bulunuyor

Neden: AccessKey'iniz sızdırılma riski altında olabilir. Alibaba Cloud koruyucu kısıtlamalar uygulamıştır.

Çözüm: AccessKey sızdırılması için çözümler.

Request was denied due to api flow control

Neden: API çağrıları çok sık yapıldığından kısıtlama tetikleniyor (örneğin, "ThrottlingException").

Çözüm:

  • Bir yeniden deneme mekanizması uygulayın ve yükü azaltmak için istekler arasındaki aralığı artırın.

  • Kod mantığını optimize edin: İstek hacmini azaltmak için toplu işlemeyi veya eşzamansız çağrıları kullanın.

Specified access key denied due to access policy

Neden: Bir AccessKey ağ erişimi kısıtlama ilkesi, kalıcı bir AccessKey'in API istekleri için hangi kaynak IP adresleriyle kullanılabileceğini sınırlar.

Çözüm:

  • AccessKey ağ erişimi kısıtlama ilkesindeki IP adresi aralığını değiştirin.

  • AccessKey ağ erişimi kısıtlama ilkesini etkinleştirmeyin.

AccessKey ağ erişimi kısıtlama ilkesi.

com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId : Can not find endpoint to access

Neden: Yanlış parametreler (geçersiz regionId gibi) SDK'nın hizmet uç noktasını bulmasını engeller.

Çözüm:

  • Alibaba Cloud belgelerine ve kod örneklerine dayanarak tüm yapılandırma parametrelerinin (Endpoint, RegionId vb.) doğru olduğunu doğrulayın.

  • OpenAPI Geliştirici Portalı içinde API'yi hata ayıklayın. Hata ayıklama başarılı olduktan sonra eksiksiz örnek projeyi yerel kullanım için indirin.

Temel Java özel durumu kontrol listesi


Hata iletisi


Neden


Çözüm


NullPointerException


Null bir nesnede yöntem çağrılmaya veya özelliğe erişilmeye çalışıldı.


Bir nesneyi kullanmadan önce NullPointerException önlemek için null kontrolü yapın. Kontrol için koşullu ifade veya onaylama kullanabilirsiniz.


ArrayIndexOutOfBoundsException


Dizide mevcut olmayan bir indekse erişilmeye çalışıldı.


Dizi indeksinin 0'a eşit veya büyük ve dizi uzunluğundan küçük olan geçerli aralıkta olduğundan emin olun. Döngü koşullarını kontrol ederek veya indeks aralığını manuel olarak denetleyerek dizi dizini dışı özel durumlardan kaçınabilirsiniz.


IllegalArgumentException


Bir yöntem yasadışı bir bağımsız değişken aldı.


Yönteme geçirilen parametreleri kontrol edin ve bunların yöntemin gereksinimlerini karşıladığından emin olun. Parametrelerin geçerliliğini kontrol etmek için koşullu ifade veya onaylama kullanabilirsiniz.


ArithmeticException


Aritmetik işlemde (örneğin, sıfıra bölme) özel durum oluştu.


Aritmetik işlem gerçekleştirmeden önce gerekli kontrolleri ve işlemleri yaparak özel durum oluşmayacağından emin olun. Aritmetik özel durumları işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


ClassCastException


Bir nesne uyumsuz bir türe dönüştürülmeye çalışıldı.


Tür dönüşümü gerçekleştirmeden önce instanceof operatörünü kullanarak türü kontrol edin ve nesnenin türünün uyumlu olduğundan emin olun. Türler uyumsuzsa uygun bir tür dönüşümü kullanmayı veya nesnenin devralma ilişkisini yeniden tasarlamayı düşünün.


FileNotFoundException


Mevcut olmayan bir dosya açılmaya çalışıldı.


Dosya yolu ve dosya adının doğru olduğundan ve dosyanın belirtilen konumda bulunduğundan emin olun. Dosya bulunamadı özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


IOException


Giriş/çıkış işleminde (örneğin, dosya okuma/yazma veya ağ iletişimi) özel durum oluştu.


Giriş/çıkış işleminin doğruluğunu kontrol edin, dosya veya kaynağın kullanılabilir olduğundan emin olun ve olası özel durumları işleyin. Giriş/çıkış özel durumlarını işlemek için özel durum işleme mekanizması kullanabilirsiniz.


InterruptedException


Çok iş parçacıklı işlem sırasında bir iş parçacığı beklenmedik şekilde kesintiye uğradı.


Çok iş parçacıklı işlemleri işlerken iş parçacığı kesintilerini uygun şekilde ele alın. İş parçacığı kesintisi özel durumlarını işlemek için özel durum işleme mekanizması veya koşullu ifade kullanabilirsiniz.


NoSuchMethodException


Mevcut olmayan bir yöntem çağrılmaya çalışıldı.


Yöntem adı ve parametrelerin doğru olduğunu kontrol edin ve çağrılan yöntemin mevcut olduğundan emin olun. Yöntem bulunamadı özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


NumberFormatException


Sayıya dönüştürülemeyen bir dize sayıya dönüştürüldü.


Bir dizeyi sayıya dönüştürürken önce makul bir kontrol yaparak dizenin doğru şekilde sayıya dönüştürülebileceğinden emin olun. Sayı biçimi özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


IndexOutOfBoundsException


Listede veya dizede mevcut olmayan bir indekse erişilmeye çalışıldı.


İndeksin 0'a eşit veya büyük ve liste veya dize uzunluğundan küçük olan geçerli aralıkta olduğundan emin olun. Dizin dışı özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


UnsupportedOperationException


Desteklenmeyen bir yöntem veya işlem çağrılmaya çalışıldı.


Desteklenen yöntemleri ve işlemleri anlamak için belgelere veya API belgelerine başvurun. Yöntem veya işlemin geçerli ortamda uygulanabilir olduğundan emin olun.


IllegalMonitorStateException


wait(), notify() veya notifyAll() yöntemi uygunsuz bir zamanda çağrıldı.


wait(), notify() veya notifyAll() yöntemini eşitlenmiş kod bloğunda doğru şekilde kullandığınızdan emin olun. Yasadışı monitör durumu özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


SecurityException


Güvenlik kurallarını ihlal eden bir işlem (örneğin, yetkisiz erişim veya dosya izinleri) gerçekleştirilmeye çalışıldı.


Koddaki güvenlik kurallarını kontrol edin ve bunların ihlal edilmediğinden emin olun. Güvenlik kurallarına göre gerekli ayarlamaları ve değişiklikleri yapabilirsiniz.


ClassNotFoundException


Mevcut olmayan bir sınıf yüklenmeye çalışıldı.


SDK'da bu genellikle birden çok bağımlılık sürümünün bir arada bulunduğu ve sınıf yükleyicisinin yanlış sınıf sürümünü yüklediği bir bağımlılık çakışmasıdır. Sınıf adı ve classpath'in doğru olduğunu kontrol edin ve gerekli sınıfın mevcut olduğundan emin olun. Sınıf bulunamadı özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.


NoSuchFieldException


Mevcut olmayan bir alana erişilmeye çalışıldı.


SDK'da bu genellikle daha düşük sürümlü bir bağımlılığın öncelik aldığı ve V2.0 SDK yönteminin mevcut olmadığı bir bağımlılık çakışmasıdır. Alan adının doğru olduğundan ve erişilen alanın mevcut olduğundan emin olun. Alan bulunamadı özel durumunu işlemek için koşullu ifade veya özel durum işleme mekanizması kullanabilirsiniz.

Teknik destek

Diğer sorunlarla karşılaşırsanız bizimle iletişime geçin:

  • Destek bileti oluşturun: Alibaba Cloud Destek Bileti Oluşturma Sayfası.

  • İlgili ihtiyaçlarınız veya geri bildirimleriniz varsa Alibaba Cloud teknik desteğiyle iletişime geçmek için DingTalk grubuna katılabilirsiniz. Grup numarası 60965016010'dur.