Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:FAQ du SDK Java

Dernière mise à jour :Aug 11, 2026

Questions fréquentes et solutions pour l'intégration et l'utilisation du SDK Java d'Alibaba Cloud.

Vérification de l'environnement

  • Java 1.8 ou version ultérieure est installé.

  • Votre réseau peut atteindre les endpoints de l'API Alibaba Cloud.

Problèmes courants

Problèmes de transmission des paramètres AK

Si votre message d'erreur contient l'un des éléments suivants, l'AccessKey n'est pas configuré correctement :

  • 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.

Solution :

  1. Vérifiez que ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET sont définis :

    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%

    Si les valeurs retournées sont correctes, la configuration a réussi. Sinon, reconfigurez-les comme décrit dans Configurer les variables d'environnement sur les systèmes Linux, macOS et Windows.

  2. Vérifiez l'absence d'erreurs liées à l'AK dans votre code.

    Exemple incorrect fréquent :

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

    Exemple correct :

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

    System.getenv() récupère l'AccessKey ID et le Secret depuis vos variables d'environnement.

    Important

    Ne codez pas en dur votre AccessKey dans le code de production. Cette pratique présente un risque de sécurité.

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

Cause : Votre projet utilise le fournisseur d'identifiants par défaut (comme illustré ci-dessous), mais aucun des types d'identifiants pris en charge n'est configuré.

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

Solution :

  • Pour utiliser directement un AccessKey :

    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"));

    Pour les autres types d'identifiants, consultez Gérer les identifiants d'accès.

  • Pour continuer à utiliser l'identifiant par défaut, configurez l'un des types d'identifiants pris en charge par la chaîne de fournisseurs d'identifiants par défaut.

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.aliyun.com/troubleshoot?q=NoPermission&product=Dysmsapi&requestId=70BA0B34-E61C-58C7-988B-4E20151492C3

L'utilisateur RAM, le rôle ou le groupe d'utilisateurs appelant l'API ne dispose pas de l'autorisation requise. Le paramètre Action:XXXX dans le message d'erreur indique l'opération API refusée. Par exemple, Action:dysms:SendSms signifie que le compte n'a pas l'autorisation d'appeler l'API SendSms du service Short Message Service.

Solution :

  1. Contactez un administrateur pour créer une politique d'autorisation personnalisée basée sur le document suivant : Créer une politique d'autorisation personnalisée.

    Remarque

    Cette politique autorise uniquement les appels SendSms vers le service Short Message Service (dysms). Remplacez l'Action par le service et l'API indiqués dans votre message d'erreur.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendSms",
          "Resource": "*"
        }
      ]
    }
  2. Accordez des autorisations au compte RAM :

Erreur lors de l'importation des dépendances Maven : Could not find artifact com.aliyun:XX:XX

Description :

Maven ne trouve pas la dépendance spécifiée.

Solution :

Configurez le référentiel central Maven dans votre projet selon l'une des méthodes suivantes :

  • Ajoutez le contenu suivant au fichier 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>
  • Ajoutez le contenu suivant au fichier settings.xml :

    <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.

Dans IntelliJ IDEA, appuyez sur Ctrl+Alt+Shift+S pour ouvrir Project Structure. Sélectionnez Modules, puis définissez Language Level pour qu'il corresponde à votre version JDK (par exemple, "8 - Lambdas, type annotations etc." pour JDK 8). Cliquez sur Apply, puis sur OK.

java: Compilation failed: internal java compiler error.

Dans IntelliJ IDEA, accédez à File > Settings > Build, Execution, Deployment > Compiler > Java Compiler. Définissez Project bytecode version et Target bytecode version pour qu'elles correspondent à votre version JDK (par exemple, 8 pour JDK 8). Cliquez sur Apply, puis sur OK.

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

Un paramètre requis manque dans l'appel API. Solution :

Exemple utilisant l'API SendSms du service Short Message Service :

  • Accédez à la page Débogage d'API dans le portail OpenAPI, puis sélectionnez le produit cloud et l'API.

  • Comparez attentivement l'objet de requête construit, tel que SendSmsRequest, afin de vous assurer que tous les champs obligatoires, comme le numéro de téléphone et la signature, sont renseignés.

  • Consultez la documentation de l'API pour confirmer les paramètres requis.

  • Assurez-vous que les valeurs des paramètres requis sont valides (par exemple, vérifiez que le format du numéro de téléphone est correct).

  • Le SDK valide les paramètres avant d'appeler l'API. Si un paramètre requis est manquant, vous recevez une erreur MissingRequiredParameter. Par exemple, un numéro de téléphone manquant retourne "MissingPhoneNumbers: code: 400".

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

Cause :

Cette exception se produit lorsque l'environnement d'exécution Java appelle une méthode ou accède à un champ inexistant. Causes fréquentes :

  • Version de dépendance obsolète dans votre pom.xml Maven ou build.gradle Gradle.

  • Conflit de dépendances : plusieurs versions de la même dépendance existent, ce qui entraîne le chargement d'une version inférieure lors de l'exécution.

  • Cache périmé : après la mise à jour d'une dépendance, le projet n'a pas été reconstruit ou le cache n'a pas été vidé.

  • Les versions des dépendances diffèrent entre la compilation et l'exécution.

  • Conflit de classpath : le mauvais classpath a été sélectionné lors de l'importation.

Solution :

  1. Vérifiez l'exemple fourni dans le Portail OpenAPI d'Alibaba Cloud pour détecter une éventuelle erreur de classpath.

  2. Si le classpath est correct, identifiez la classe spécifique ayant provoqué l'erreur à partir de la pile d'exceptions, puis trouvez la dépendance et la version correspondantes.

  3. Exécutez la commande suivante pour afficher les dépendances directes et transitives du projet, ainsi que les conflits et doublons spécifiques.

    • Maven : Maven utilise les règles "chemin le plus court d'abord" et "ordre de déclaration d'abord" pour résoudre les versions des dépendances. Résolvez les conflits en ajustant l'ordre des dépendances.

      mvn dependency:tree -Dverbose
    • Gradle : Gradle utilise "version la plus élevée d'abord" par défaut ; seules les versions obsolètes posent donc problème. Passez à l'étape 4 pour obtenir la dernière version.

  4. Dans la sortie de l'arborescence des dépendances, recherchez les conflits. Le cas échéant, placez la version la plus élevée de la dépendance conflictuelle en haut de la section <dependencies></dependencies> dans le fichier pom.xml. Exécutez mvn clean install -U pour reconstruire. Si l'erreur persiste, poursuivez avec les étapes suivantes.

  5. Trouvez la dernière version de la dépendance dans Packages de dépendances communs du SDK Java V2.0. Mettez à jour la version dans votre fichier pom.xml ou build.gradle.

  6. Nettoyez et reconstruisez le projet :

    • Maven

      mvn clean install -U
    • Gradle :

      gradle clean build --refresh-dependencies
  7. Vérifiez que le problème est résolu.

Exemple :

Le message d'exception est java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential().

  1. Après vérification, le classpath est correct.

  2. Selon le message d'exception, l'erreur s'est produite dans la classe com.aliyun.credentials.Client, qui se trouve dans la dépendance credentials-java. La version actuellement référencée est 0.2.4.

  3. Après exécution de mvn dependency:tree -Dverbose, il apparaît que la dépendance parente credentials-java, tea-openapi, présente un conflit de version. La version actuellement référencée est 0.3.2, et la version conflictuelle est 0.3.8. Nous recommandons de déplacer la dépendance parente correspondant à la version tea-openapi 0.3.8 en haut de la section <dependencies></dependencies>.

  4. Exécutez la commande mvn clean install -U pour nettoyer et reconstruire le projet, puis vérifiez que le problème est résolu.

  5. Si le problème persiste, obtenez la dernière version de credentials-java depuis Maven Central: com.aliyun:credentials-java et ajoutez manuellement la dépendance au fichier pom.xml.

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

Les problèmes de délai d'attente ont plusieurs causes fréquentes :

Problèmes de connectivité réseau

Le réseau entre votre client et le serveur est déconnecté ou instable.

Solution :

Testez la connectivité à l'endpoint du produit cloud en utilisant ping ou curl. Par exemple, si l'API SendSms expire : ping dysmsapi.aliyuncs.com ou curl -v https://dysmsapi.aliyuncs.com.

  • Si la commande expire, vérifiez les politiques de blocage dans votre pare-feu ou votre routeur.

  • Si la commande réussit, configurez un délai d'attente raisonnable pour éviter les échecs. Consultez Mécanisme de délai d'attente. Exemple :

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

Temps de traitement API long

Le temps de traitement de l'API dépasse le délai de lecture configuré.

Solution : Augmentez le délai de lecture. Consultez Mécanisme de délai d'attente. Exemple :

// 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 .

L'API nécessite HTTPS, mais votre requête a utilisé HTTP.

Solution :

  • Pour le SDK V1.0, définissez le protocole HTTPS sur l'objet Request :

    request.setSysProtocol(com.aliyuncs.http.ProtocolType.HTTPS);
  • Utilisez le SDK V2.0, qui utilise HTTPS par défaut.

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

Vous avez saisi un Endpoint ou un RegionId incorrect. Solution :

Vérifiez que votre région prend en charge le service cible. Trouvez l'Endpoint du produit sur sa page d'accueil dans le Portail développeur OpenAPI.

Par exemple, pour Short Message Service, connectez-vous au portail OpenAPI d'Alibaba Cloud, accédez à la page du produit et consultez la Service Region List pour confirmer l'ID de région et l'adresse de service corrects. L'Endpoint du service SMS suit le modèle [product_code].[region_id].aliyuncs.com. Pour les régions nationales (telles que cn-beijing, cn-hangzhou, cn-shanghai, etc.), l'adresse de service est uniformément dysmsapi.aliyuncs.com.

Unexpected response code for CONNECT: 400.

La requête a été interceptée par un nœud intermédiaire et n'a pas atteint la passerelle Alibaba Cloud.

Solution :

  • La configuration du proxy peut être incorrecte. Testez avec : curl https://<nom de domaine du service Alibaba Cloud>/ -v -x <IP du proxy>:<port du proxy> (par exemple, curl https://ecs-cn-hangzhou.aliyuncs.com/ -v -x 127.0.0.1:3128).

  • Un pare-feu interne peut bloquer la requête. Essayez de changer de réseau (par exemple, connectez-vous à un point d'accès mobile).

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

Une ancienne version du package Tea ne peut pas convertir une structure complexe en String, ce qui provoque cette erreur.

Solution :

Mettez à niveau le package Tea vers la version 1.2.7 ou ultérieure :

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

Échec du téléchargement automatique des dépendances avec Maven dans IDEA

  • Mettez à jour le référentiel Maven

    Ouvrez le menu "File" et sélectionnez "Settings" (ou "Preferences"). Dans le volet de navigation de gauche, développez "Build, Execution, Deployment", puis sélectionnez "Build Tools" > "Maven". Trouvez l'onglet "Repositories", sélectionnez le référentiel local, cliquez sur le bouton "Update" et attendez la fin de la mise à jour.

  • Vérifiez le cache d'IDEA

    Ouvrez le menu "File", sélectionnez "Invalidate Caches...". Dans la boîte de dialogue qui apparaît, sélectionnez "Invalidate and Restart", et attendez qu'IDEA vide le cache et redémarre.

  • Vérifiez la connexion réseau

    Si Maven ne peut pas se connecter au référentiel central ou à d'autres référentiels distants, le téléchargement des dépendances peut échouer. Assurez-vous que votre connexion réseau fonctionne normalement et qu'aucun pare-feu ou serveur proxy ne bloque l'accès de Maven.

  • Vérifiez la configuration Maven

    Vérifiez que le fichier de configuration Maven (généralement settings.xml) est correctement configuré. Assurez-vous que "localRepository" pointe vers le bon chemin de référentiel local, et que "mirrors", "proxies" et "profiles" sont configurés correctement.

Comment éviter les messages WARNING causés par la réflexion

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

Lors de l'utilisation du SDK Alibaba Cloud avec une version JDK supérieure, des avertissements liés à la réflexion peuvent apparaître dans la sortie.

Solution :

Définissez la variable d'environnement ALIBABA_CLOUD_SDK_LOG_LEVEL sur ERROR pour supprimer les avertissements :

  1. Définissez la variable d'environnement :

    Windows

    set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR

    Linux/macOS

    export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR
  2. Confirmez le paramètre de la variable d'environnement :

    Windows

    echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%

    Linux/macOS

    echo $ALIBABA_CLOUD_SDK_LOG_LEVEL
  3. Démarrez votre application. Les messages d'avertissement du SDK Alibaba Cloud ne s'afficheront plus ; seuls les messages de niveau ERROR ou supérieur apparaîtront.

Remarque
  • Pour modifier le niveau de journalisation à des fins de débogage ou de développement, changez la valeur de la variable d'environnement en DEBUG ou INFO.

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
/

La signature de la requête ne correspond pas au calcul côté serveur. Causes possibles :

  • AccessKey (AK) copié incorrectement

  • Algorithme de signature incorrect

  • Les paramètres de la requête ou leur ordre ne répondent pas aux exigences de l'API.

Solution :

  1. Vérifiez que l'AccessKey ID et le Secret dans votre code correspondent exactement à ceux de la console (sans espaces supplémentaires ni caractères spéciaux). Utilisez un AccessKey existant ou créez-en un nouveau via Créer une paire d'AccessKey. Remarque : L'AccessKey Secret n'est affiché qu'une seule fois lors de sa création.

  2. Mettez à niveau commons-codec pour éviter les erreurs de calcul de signature.

    Mettez à jour la dépendance :

    Maven

    Modifiez le fichier pom.xml.

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

    Après avoir mis à jour le numéro de version, exécutez la commande suivante :

    mvn clean install

    Gradle

    Dans le fichier build.gradle, ajoutez ou mettez à jour la dépendance :

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

    Exécutez la commande suivante pour construire le projet :

    gradle build
  3. Si vous utilisez l'auto-signature, vérifiez que la logique de votre code correspond au Mécanisme de corps de requête et de signature V3.

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

La version du SDK est trop ancienne et ne prend pas en charge la région ou l'API cible. Solution :

Mettez à niveau la dépendance principale du SDK :

Maven

Si vous utilisez Maven pour la gestion de projet, mettez à jour la version de la dépendance dans le fichier pom.xml :

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

Gradle

Si vous utilisez Gradle pour la gestion de projet, mettez à jour la version de la dépendance dans le fichier build.gradle :

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 .

Une version incompatible d'Apache HttpClient est utilisée avec le SDK Alibaba Cloud. Solution :

  • Vérifiez qu'aucune autre bibliothèque n'introduit une version incompatible d'HttpClient via la gestion des dépendances de votre outil de construction.

  • Mettez à jour Apache HttpClient vers la version 4.5.14 ou ultérieure :

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

Erreur lors de l'appel d'une OpenAPI : code: 401, You have not activated the XXX service, ou message similaire

Votre compte Alibaba Cloud n'a pas activé le service correspondant. XXX est le nom du service (par exemple, OCR service). Solution :

  1. Connectez-vous à la console de gestion du service correspondant.

  2. Recherchez et activez la fonctionnalité requise.

  3. Attendez que le service soit activé, puis appelez à nouveau l'API.

Failed to get RAM session credentials from ECS metadata service. HttpCode=XX

L'identifiant du rôle RAM d'instance (ecs_ram_role) ne peut être utilisé que dans une instance ECS ou ECI à laquelle un rôle RAM est attaché. Consultez Rôle RAM d'instance ECS et Utiliser un rôle RAM d'instance ECI en appelant une API.

  • Pour vérifier que cet identifiant fonctionne, exécutez la commande suivante dans l'instance ECS :

    • Instance Linux

      # 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]
    • Instance Windows (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]

    Si la réponse suivante est retournée, l'identifiant du rôle RAM d'instance est disponible :

    {
      "AccessKeyId" : "AccessKeyIdValue",
      "AccessKeySecret" : "AccessKeySecretValue",
      "Expiration" : "2025-07-10T08:37:58Z",
      "SecurityToken" : "SecurityTokenValue",
      "LastUpdated" : "2025-07-10T02:33:26Z",
      "Code" : "Success"
    }
  • Pour passer à un autre type d'identifiant, consultez Gérer les identifiants d'accès.

There is a risk of leakage of this AccessKey

Cause : Votre AccessKey pourrait présenter un risque de fuite. Alibaba Cloud a appliqué des restrictions de protection.

Solution : Solutions pour la fuite d'AccessKey.

Request was denied due to api flow control

Cause : Les appels API sont trop fréquents, déclenchant une limitation du débit (par exemple, "ThrottlingException").

Solution :

  • Mettez en œuvre un mécanisme de nouvelle tentative et augmentez l'intervalle entre les requêtes pour réduire la charge.

  • Optimisez la logique du code : utilisez le traitement par lots ou les appels asynchrones pour réduire le volume de requêtes.

Specified access key denied due to access policy

Cause : Une politique de restriction d'accès réseau AccessKey limite les adresses IP source pouvant utiliser un AccessKey permanent pour les requêtes API.

Solution :

  • Modifiez la plage d'adresses IP dans la politique de restriction d'accès réseau AccessKey.

  • N'activez pas la politique de restriction d'accès réseau AccessKey.

Politique de restriction d'accès réseau AccessKey.

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

Cause : Des paramètres incorrects (tels qu'un regionId invalide) empêchent le SDK de trouver l'endpoint du service.

Solution :

  • Vérifiez que tous les paramètres de configuration (Endpoint, RegionId, etc.) sont corrects en vous basant sur la documentation Alibaba Cloud et les exemples de code.

  • Déboguez l'API dans le Portail développeur OpenAPI. Après un débogage réussi, téléchargez le projet d'exemple complet pour une utilisation locale.

Liste de contrôle des exceptions Java de base

Message d'erreur

Cause

Solution

NullPointerException

Tentative d'appel d'une méthode ou d'accès à une propriété sur un objet nul.

Vérifiez la nullité des objets avant de les utiliser pour éviter une NullPointerException. Utilisez une instruction conditionnelle ou une assertion.

ArrayIndexOutOfBoundsException

Tentative d'accès à un index inexistant dans le tableau.

Assurez-vous que l'index du tableau se situe dans la plage valide (supérieur ou égal à 0 et inférieur à la longueur du tableau). Contrôlez les conditions de boucle ou vérifiez manuellement la plage d'index pour éviter cette exception.

IllegalArgumentException

Une méthode a reçu un argument illégal.

Vérifiez que les paramètres passés à la méthode répondent à ses exigences. Utilisez une instruction conditionnelle ou une assertion pour valider les paramètres.

ArithmeticException

Une exception s'est produite lors d'une opération arithmétique, telle qu'une division par zéro.

Effectuez les vérifications nécessaires avant toute opération arithmétique pour prévenir les exceptions. Utilisez une instruction conditionnelle ou un bloc try-catch pour gérer ces erreurs.

ClassCastException

Tentative de conversion d'un objet vers un type incompatible.

Utilisez l'opérateur instanceof avant toute conversion de type pour vérifier la compatibilité. Si les types sont incompatibles, envisagez une conversion appropriée ou revoyez la relation d'héritage de l'objet.

FileNotFoundException

Tentative d'ouverture d'un fichier inexistant.

Vérifiez que le chemin et le nom du fichier sont corrects et que le fichier existe à l'emplacement spécifié. Gérez cette exception via une instruction conditionnelle ou un bloc try-catch.

IOException

Une exception s'est produite lors d'une opération d'entrée/sortie (lecture/écriture de fichier, communication réseau).

Vérifiez la validité de l'opération d'entrée/sortie et la disponibilité de la ressource. Gérez les exceptions potentielles via un mécanisme de gestion des exceptions.

InterruptedException

Un thread a été interrompu de manière inattendue lors d'une opération multithread.

Gérez correctement les interruptions de thread lors d'opérations multithreads. Utilisez un mécanisme de gestion des exceptions ou une instruction conditionnelle.

NoSuchMethodException

Tentative d'appel d'une méthode inexistante.

Vérifiez que le nom de la méthode et les paramètres sont corrects, et assurez-vous que la méthode appelée existe. Gérez cette exception via une instruction conditionnelle ou un bloc try-catch.

NumberFormatException

Conversion d'une chaîne non numérique en nombre.

Validez la chaîne avant de la convertir en nombre. Utilisez une instruction conditionnelle ou un mécanisme de gestion des exceptions pour traiter les erreurs de format.

IndexOutOfBoundsException

Tentative d'accès à un index inexistant dans une liste ou une chaîne.

Assurez-vous que l'index se situe dans la plage valide (supérieur ou égal à 0 et inférieur à la longueur de la liste ou de la chaîne). Gérez cette exception via une instruction conditionnelle ou un bloc try-catch.

UnsupportedOperationException

Tentative d'appel d'une méthode ou d'une opération non prise en charge.

Consultez la documentation API pour connaître les méthodes et opérations prises en charge. Assurez-vous que l'opération est réalisable dans l'environnement actuel.

IllegalMonitorStateException

Appel de wait(), notify() ou notifyAll() hors d'un contexte approprié.

Appelez wait(), notify() ou notifyAll() uniquement dans un bloc de code synchronisé. Gérez cette exception via une instruction conditionnelle ou un mécanisme de gestion des exceptions.

SecurityException

Tentative d'effectuer une opération violant les règles de sécurité (accès non autorisé, permissions de fichier).

Vérifiez que le code respecte les règles de sécurité. Effectuez les ajustements nécessaires conformément à ces règles.

ClassNotFoundException

Tentative de chargement d'une classe inexistante.

Dans le SDK, cela résulte généralement d'un conflit de dépendances où plusieurs versions coexistent, amenant le chargeur de classes à charger la mauvaise version. Vérifiez le nom de la classe et le classpath, et assurez-vous que la classe requise existe. Gérez cette exception via une instruction conditionnelle ou un bloc try-catch.

NoSuchFieldException

Tentative d'accès à un champ inexistant.

Dans le SDK, cela résulte généralement d'un conflit de dépendances où une version inférieure a pris le dessus, rendant la méthode du SDK V2.0 indisponible. Vérifiez le nom du champ et son existence. Gérez cette exception via une instruction conditionnelle ou un bloc try-catch.

Support technique

Si vous rencontrez d'autres problèmes, contactez-nous :