このドキュメントは、Java SDK を迅速に統合して使用するのに役立ちます。一般的な質問に回答し、操作を正確かつ効率的に実行できるようサポートします。
環境チェック
Java 環境が正しくインストールされていることを確認してください。ご利用の Java バージョンは 1.8 以降である必要があります。
ネットワークが Alibaba Cloud API にアクセスできることを確認してください。
質問リスト
Maven 依存関係のインポート時のエラー:Could not find artifact com.aliyun:XX:XX
Your request is denied as lack of SSL protection. RequestId.
SDK.EndpointResolvingError: 「そのようなリージョン 'cn-XX' はありません。リージョン ID を確認してください」。
OpenAPI 呼び出し時のエラー:code: 401, You have not activated the XXX service、または類似のメッセージ
com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId: Can not find endpoint to access
AK パラメーターの受け渡しに関する問題。
症状:コードの実行時にエラーが発生します。エラーメッセージに次の情報が含まれている場合、AccessKey が正しく設定されていません。
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.
解決策:
次のコマンドを実行して、`ALIBABA_CLOUD_ACCESS_KEY_ID` と `ALIBABA_CLOUD_ACCESS_KEY_SECRET` が環境変数に設定されているかどうかを確認します。
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%正しい AccessKey が返された場合、設定は成功です。戻り値が空または正しくない場合は、再度設定を試みてください。詳細については、「Linux、macOS、および Windows システムでの環境変数の設定」をご参照ください。
コードに AK 関連のエラーがないか確認します。
一般的な誤った例:
Config config = new Config() .setAccessKeyId(System.getenv("yourAccessKeyID")) .setAccessKeySecret(System.getenv("yourSecret"));正しい例:
Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));説明`System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")` と `System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")` は、環境変数から `ALIBABA_CLOUD_ACCESS_KEY_ID` と `ALIBABA_CLOUD_ACCESS_KEY_SECRET` の値を取得します。
重要オンラインコードに AccessKey をハードコーディングしないでください。この方法はセキュリティリスクをもたらします。
チェーン内のどのプロバイダーからも認証情報を取得できません : ...
原因:プロジェクトでデフォルトの認証情報を使用しましたが (以下のコード例を参照)、デフォルトの認証情報でサポートされているどの認証情報タイプも設定していなかったため、このエラーが発生しました。
com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setCredential(credential);解決策:
コードで AccessKey を直接使用する場合は、次のコードをご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // この例は、環境変数から AccessKey ID を取得する方法を示しています。 .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // この例は、環境変数から AccessKey Secret を取得する方法を示しています。 .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));他の認証情報を使用する方法については、「アクセス認証情報の管理」をご参照ください。
デフォルトの認証情報を引き続き使用するには、デフォルトの認証情報プロバイダーチェーンでサポートされているいずれかの認証情報タイプを設定する必要があります。
コード 403、この操作を実行する権限がありません。アクション: xxxx。

この問題の直接的な原因は、API を呼び出している Resource Access Management (RAM) のユーザー、ロール、またはユーザーグループが、API 操作を実行するために必要な権限を付与されていないことです。エラーメッセージ内の Action:XXXX は、呼び出そうとしている特定の API 操作を示します。たとえば、Action:dysms:SendSms は、Short Message Service の SendSms API を呼び出す必要があるものの、現在のアカウントにはこの API を呼び出す権限がないことを示します。したがって、RAM アカウントにショートメッセージを送信する権限を付与する必要があります。
解決策:
管理者権限を持つ RAM ユーザーに依頼し、以下のポリシードキュメントに基づいてカスタム権限ポリシーを作成してください。詳細については、「カスタム権限ポリシーの作成」をご参照ください。
説明このアクセスポリシーは、Short Message Service (dysms) の
SendSmsAPI の呼び出しのみを許可します。エラーメッセージに表示されている実際のサービスと API に置き換えてください。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dysms:SendSms", "Resource": "*" } ] }RAM アカウントに権限を付与します。詳細については、以下をご参照ください。
Maven 依存関係のインポート時のエラー:Could not find artifact com.aliyun:XX:XX
説明:
Maven プロジェクトで依存関係をインポートすると、対応する依存関係が見つからないことを示すエラーメッセージが表示されます。
解決策:
プロジェクトに Maven セントラルリポジトリのアドレスを設定します。これにより、プロジェクトのビルド中に Maven がどこから依存関係をダウンロードするかが指定されます。次のいずれかの方法を使用できます。
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>settings.xmlファイルに以下の内容を追加します:<settings> <!-- 既存の設定 --> <mirrors> <mirror> <!-- この id は任意の一意の識別子にすることができます --> <id>central</id> <mirrorOf>central</mirrorOf> <name>Maven Central Mirror</name> <url>https://repo1.maven.org/maven2</url> </mirror> </mirrors> </settings>
java: エラー: リリースバージョン X はサポートされていません。
IntelliJ IDEA で、Ctrl+Alt+Shift+S を押して [プロジェクト構造] ウィンドウを開きます。[モジュール] を選択します。右側の [言語レベル] で、お使いの JDK バージョンと一致するバージョンを選択します。たとえば、JDK 8 を使用している場合は、[言語レベル] で「8 - Lambdas, type annotations etc.」を選択します。[適用] をクリックし、次に [OK] をクリックします。

java: コンパイルに失敗しました: 内部 Java コンパイラエラー。
IntelliJ IDEA のメニューバーで、[File] → [Settings] → [Build, Execution, Deployment] → [Compiler] → [Java Compiler] をクリックします。[Project bytecode version] と [Target bytecode version] で、ご利用の JDK バージョンに一致するバージョンを選択します。たとえば、JDK 8 を使用している場合は、両方のオプションで 8 を選択します。[Apply] をクリックし、[OK] をクリックします。

コード: 400、このアクションには <CERTAIN_FIELD > が必須です。
この問題の直接的な原因は、API の呼び出し時に必須パラメーターが入力されていないことです。ソリューション:
以下の例では、Short Message Service の SendSms API を使用します:
OpenAPI Portal の API デバッグページに移動し、クラウドプロダクトと API を選択します。
作成されたリクエストオブジェクト (
SendSmsRequestなど) を慎重に比較し、電話番号や署名などのすべての必須フィールドが入力されていることを確認してください。API ドキュメントを参照して、必須パラメーターを確認します。
必須パラメーターの値が正しいことを確認します。たとえば、電話番号のフォーマットが要件を満たしているかどうかを確認します。
API を呼び出す前に、SDK は自動的にパラメーターを検証します。必須パラメーターが欠落している場合、
MissingRequiredParameterのようなエラーを受け取ります。たとえば、電話番号パラメーターが欠落している場合、"MissingPhoneNumbers: code: 400" というエラーが報告されます。

SendSmsRequest sendSmsRequest = new SendSmsRequest()
// ショートメッセージを受信する電話番号に置き換えます。
.setPhoneNumbers("<YOUR_VALUE>")
// SMS 署名に置き換えます。
.setSignName("<YOUR_VALUE>")
// SMS テンプレートコードに置き換えます。
.setTemplateCode("<YOUR_VALUE>");java.lang.NoSuchMethodError、java.lang.NoSuchFieldError
原因:
この種の例外は通常、Java ランタイム環境が存在しないメソッドを呼び出そうとしたり、存在しないフィールドにアクセスしようとしたりした場合に発生します。考えられる原因は次のとおりです。
古い依存関係バージョン:Maven や Gradle などのビルドツールの設定ファイル (例:pom.xml や build.gradle) で、古い依存関係バージョンが指定されている可能性があります。
依存関係の競合:プロジェクト内に同じ依存関係の複数のバージョンが存在し、実行時に下位バージョンの依存関係がロードされる原因となっている可能性があります。
依存関係が更新されていない:依存関係のバージョンを更新した後、プロジェクトが再ビルドされなかったり、キャッシュがクリアされなかったりして、古いバージョンがまだ使用されている可能性があります。
コンパイル時と実行時の環境の不一致:コンパイル時に使用された依存関係のバージョンが、実行時の依存関係のバージョンと一致していません。
クラスパスの競合:インポート時に誤ったクラスパスが選択されました。
解決策:
Alibaba Cloud OpenAPI Portal で提供されている例を確認し、クラスパスにエラーがないか確認します。
クラスパスが正しい場合は、例外スタック情報からエラーの原因となった特定のクラスを取得し、対応する依存関係とバージョンを見つけることができます。
次のコマンドを実行して、プロジェクトの直接的および推移的な依存関係を、特定の競合や重複とともに表示します。
Maven:Maven はデフォルトで「最短パス優先」および「宣言順優先」戦略を使用して、使用する依存関係のバージョンを決定します。依存関係の順序を調整することで、競合を解決できます。
mvn dependency:tree -DverboseGradle:Gradle はデフォルトで「最高バージョン優先」戦略を使用して競合を解決します。これは、古いバージョンのみが問題になる可能性があることを意味します。ステップ 4 に進んで、依存関係の最新バージョンを取得してください。
出力された依存関係ツリーで、依存関係またはその親の依存関係に競合がないか確認します。競合がある場合は、依存関係またはその親の依存関係の最上位バージョンを pom.xml ファイルの <dependencies></dependencies> セクションの先頭に移動します。
mvn clean install -Uを実行して再ビルドします。エラーが解決しない場合は、次のステップに進みます。「V2.0 Java SDK 共通依存関係パッケージ」で対応する依存関係の最新バージョンを見つけます。Maven や Gradle などのビルドツールの設定ファイル (例:pom.xml や build.gradle) で、依存関係の最新バージョンを再指定します。
次のコマンドを実行して、プロジェクトをクリーンアップして再ビルドします。
Maven
mvn clean install -UGradle:
gradle clean build --refresh-dependencies
問題が解決したことを確認します。
例:
例外メッセージは java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential() です。
確認後、クラスパスは正しいです。
例外メッセージによると、例外は
credentials-java依存関係にあるcom.aliyun.credentials.Clientクラスで発生しました。現在参照されているバージョンは0.2.4です。mvn dependency:tree -Dverboseを実行すると、親依存関係credentials-java、tea-openapiにバージョンの競合があることが判明しました。現在参照されているバージョンは0.3.2で、競合するバージョンは0.3.8です。親依存関係であるtea-openapiバージョン0.3.8を <dependencies></dependencies> セクションの先頭に移動することをお勧めします。mvn clean install -Uコマンドを実行してプロジェクトをクリーンアップして再ビルドし、問題が解決されたことを確認します。問題が解決しない場合は、Maven Central: com.aliyun:credentials-java から
credentials-javaの最新バージョンを取得し、pom.xml ファイルに手動で依存関係を追加できます。
「TeaUnretryableException: timeout」、「java.net.SocketTimeoutException: connect timed out」、「java.net.SocketTimeoutException: Read timed out」、「SDK.ServerUnreachable」、「Connection aborted」、または「RemoteDisconnected」。
タイムアウトの問題は、いくつかの要因によって引き起こされる可能性があります。以下は、一般的な原因とそのソリューションです。
ネットワーク接続の問題
説明:クライアントとサーバー間のネットワークが切断されているか不安定であるため、リクエストがターゲットサーバーに到達できません。
解決策:
ping または curl コマンドを使用して、ローカルホストとクラウドプロダクトのエンドポイント間の接続性をテストします。 たとえば、ショートメッセージ送信 API への呼び出しがタイムアウトした場合、ping dysmsapi.aliyuncs.com または curl -v https://dysmsapi.aliyuncs.com を使用して接続性をテストします。
コマンドがタイムアウトするか応答しない場合は、ローカルのファイアウォールまたはルーターにブロッキングポリシーがあるかどうかを確認します。
コマンドが応答する場合は、不適切な設定によるリクエストの失敗を避けるために、合理的なタイムアウト期間を設定します。詳細については、「タイムアウトメカニズム」をご参照ください。以下はコード例です。
// 実行時パラメーターのタイムアウト設定。この実行時パラメーターインスタンスを使用するリクエストにのみ有効です。
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 5000;長い API 処理時間
説明:ターゲット API がリクエストを処理するのにかかる時間が、設定された読み取りタイムアウト期間を超えています。
ソリューション:より長い API 応答時間に対応できるように、読み取りタイムアウト期間を設定します。詳細については、「タイムアウトメカニズム」をご参照ください。たとえば、読み取りタイムアウトパラメーターを設定することで、現在のリクエストの読み取りタイムアウト期間を延長できます。以下はコード例です。
// 実行時パラメーターのタイムアウト設定。この実行時パラメーターインスタンスを使用するリクエストにのみ有効です。
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.readTimeout = 10000;SSL 保護がないため、リクエストは拒否されました。RequestId 。
この問題は、API が HTTPS プロトコルの使用を要求しているにもかかわらず、HTTP プロトコルを使用したために発生します。
解決策:
V1.0 SDK の場合、Request オブジェクトでリクエストを HTTPS プロトコルで送信するように設定できます。
request.setSysProtocol(com.aliyuncs.http.ProtocolType.HTTPS);V2.0 SDK を使用します。V2.0 SDK はデフォルトで HTTPS プロトコルを使用します。
コード: 404、指定された API が見つかりません。URL とメソッドを確認してください。
このエラーの直接的な原因は、プロダクト API を呼び出す際に誤ったエンドポイントまたは RegionId を入力したことである可能性があります。ソリューションは次のとおりです。
選択したリージョンが呼び出しているサービスをサポートしていることを確認してください。 OpenAPI Developer Portal のプロダクトのホームページで、プロダクトのエンドポイントを見つけることができます。次の例では、Short Message Service を使用しています。
CONNECT の予期しない応答コード: 400。
この問題の直接的な原因は、リクエストが中間ノードによって傍受され、Alibaba Cloud ゲートウェイに到達しなかったことです。
解決策:
プロキシサーバーの設定が正しくない可能性があります。これは、プロキシサービスがリクエストを Alibaba Cloud ゲートウェイに正しく転送できないことを意味します。curl でプロキシ設定を確認できます。`curl https:/// -v -x <プロキシ IP アドレス/プロキシドメイン名>:<プロキシポート>`、たとえば、`curl https://ecs-cn-hangzhou.aliyuncs.com/ -v -x 127.0.0.1:3128`。
リクエストが内部ネットワークのファイアウォールによってブロックされている可能性があります。ローカル環境では、モバイルホットスポットに接続するなど、ネットワーク環境を切り替えてみてください。
java.lang.String フィールド com.aliyun.imm20200930.models.GenerateWebofficeTokenShrinkRequest.userShrink を java.util に設定できません。
この問題の直接的な原因は、古いバージョンの Tea パッケージが複雑な構造を文字列構造に変換できず、エラーを引き起こすことです。
解決策:
Tea パッケージをバージョン 1.2.7 以降にアップグレードします。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea</artifactId>
<version>1.2.7</version>
</dependency>IDEA で Maven を使用した依存関係の自動ダウンロードの失敗
Maven リポジトリを更新する
[File] メニューを開き、[Settings] (または [Preferences]) を選択します。左側のナビゲーションウィンドウで、[Build, Execution, Deployment] を展開し、[Build Tools] > [Maven] を選択します。[Repositories] タブを見つけ、ローカルリポジトリを選択し、[Update] ボタンをクリックして、更新が完了するのを待ちます。

IDEA キャッシュを確認する
[File] メニューを開き、[Invalidate Caches...] を選択します。表示されるダイアログボックスで、[Invalidate and Restart] を選択し、IDEA がキャッシュをクリアして再起動するのを待ちます。

ネットワーク接続の確認
Maven がセントラルリポジトリまたは他のリモートリポジトリに接続できない場合、依存関係をダウンロードできない可能性があります。ネットワーク接続が正常であり、ファイアウォールやプロキシサーバーが Maven のアクセスをブロックしていないことを確認してください。
Maven 設定を確認する
Maven 設定ファイル (通常は settings.xml) が正しく設定されていることを確認します。「localRepository」が正しいローカルリポジトリパスを指していること、および「mirrors」、「proxies」、「profiles」が正しく設定されていることを確認してください。
リフレクションによる WARNING メッセージの回避方法

Alibaba Cloud SDK をより高いバージョンの JDK で開発に使用すると、リフレクションに関連する警告メッセージが表示されることがあります。これらの警告は、特に本番環境で不要なログメッセージを避けたい場合に、プログラムの出力に影響を与える可能性があります。
ソリューション:
環境変数 ALIBABA_CLOUD_SDK_LOG_LEVEL を ERROR に設定することで、警告メッセージの表示を抑制できます。手順:
環境変数を設定します:
Windows
set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERRORLinux/macOS
export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR環境変数の設定を確認します:
Windows
echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%Linux/macOS
echo $ALIBABA_CLOUD_SDK_LOG_LEVEL環境変数を設定した後、Java アプリケーションを起動します。この時点で、Alibaba Cloud SDK によって生成された警告メッセージは表示されなくなります。
ERRORレベル以上のログメッセージのみが表示されます。
デバッグや開発のためにログレベルを変更するには、環境変数の値を
DEBUGまたはINFOに変更できます。
指定された署名が計算と一致しません。

この問題の直接的な原因は、通常、リクエストの署名とサーバーによって計算された署名が一致しないことです。考えられる原因は次のとおりですが、これらに限定されません。
AccessKey (AK) のコピーミス
不正な署名アルゴリズム
リクエストパラメーターとその順序が API の要件を満たしているか確認します。
解決策:
コードに設定した AccessKey と AccessKey Secret が、コンソールから取得したものと完全に同じであることを確認します。余分なスペースや特殊文字がないか確認してください。既存の AccessKey を使用するか、新しいものを作成します。詳細については、「AccessKey ペアの作成」をご参照ください。注:AccessKey 漏洩のリスクを減らすため、AccessKey Secret は作成時に一度だけ表示され、後で表示することはできません。安全に保管してください。
commons-codecのバージョンをアップグレードして、潜在的な署名計算エラーを回避します:
依存関係を更新します:
Maven
pom.xmlファイルを変更します。<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version> <!-- 更新されたバージョン --> </dependency>バージョン番号を更新した後、次のコマンドを実行します。
mvn clean installGradle
build.gradleファイルに、依存関係を追加または更新します:dependencies { implementation 'commons-codec:commons-codec:1.15' // 更新されたバージョン }次のコマンドを実行してプロジェクトをビルドします:
gradle build自己署名を使用している場合は、「V3 リクエストボディと署名メカニズム」で説明されている内容とコードロジックが一致しているか注意深く確認してください。
SDK.EndpointResolvingError: 「そのようなリージョン 'cn-XX' はありません。リージョン ID を確認してください」。
この問題の直接的な原因は、SDK のバージョンが古すぎて、新しいリージョンや API の呼び出しをサポートしていないことです。ソリューション:
SDK 依存関係バージョンをアップグレードします。
Maven
Maven を使用してプロジェクトを管理している場合は、pom.xml ファイルの依存関係バージョンを更新します:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.7.2</version>
</dependency>Gradle
Gradle を使用してプロジェクトを管理している場合は、build.gradle ファイルの依存関係バージョンを更新します:
dependencies {
implementation 'com.aliyun:aliyun-java-sdk-core:4.7.2'
implementation 'com.aliyun:aliyun-java-sdk-sts:3.1.2'
}[com.aliyuncs.IAcsClient] のインスタンス化に失敗しました: ファクトリメソッド 'iAcsClient' がメッセージ: org/apache/http/conn/ssl/DefaultHostnameVerifier で例外をスローしました。
この問題の直接的な原因は、Alibaba Cloud SDK と互換性のないバージョンの Apache HttpClient ライブラリを使用したことでエラーが発生したことです。ソリューション:
プロジェクトが複数の依存関係ライブラリを使用している場合は、他のライブラリが互換性のないバージョンの HttpClient を導入していないことを確認してください。手動で検査するか、ビルドツールの依存関係管理機能を使用してこれを確認します。
Apache HttpClient のバージョンが古すぎます。バージョン 4.5.14 以降に更新することを推奨します。
<dependency> <groupId>org.apache.httpcomponents.client</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> <!-- 最新バージョンを確認してください --> </dependency>
OpenAPI 呼び出し時のエラー:code: 401, You have not activated the XXX service, or a similar message.
このエラーは、ご利用の Alibaba Cloud アカウントで対応するサービスが有効化されていないことを示しています。XXX は、OCR サービス のような特定のサービス名を表します。解決策:
対応するサービスの管理コンソールにログインします。
必要な機能を見つけて有効にします。
サービスが有効になるのを待ってから、再度 API を呼び出します。
ECS メタデータサービスから RAM セッション認証情報を取得できませんでした。HttpCode=XX
インスタンス RAM ロール (ecs_ram_role) 認証情報は、ECS または ECI インスタンスでのみ使用でき、インスタンスに RAM ロールをアタッチする必要があります。詳細については、「ECS インスタンス RAM ロール」および「API を呼び出して ECI インスタンス RAM ロールを使用する」をご参照ください。
プロジェクトでこの認証情報を使用できるかどうかを確認するには、ECS インスタンスで次のコマンドを実行します。
Linux インスタンス
# メタデータアクセス認証情報を取得します。有効期限を設定する必要があります。リクエストに X-Forwarded-For ヘッダーを含めることはできません。100.100.100.200 はインスタンスメタデータサービスの IPv4 アドレスです。 TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<metadata_credential_expiration_time>"` # インスタンスメタデータへのアクセス curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name]Windows インスタンス (PowerShell)
# メタデータアクセス認証情報を取得します。有効期限を設定する必要があります。リクエストに X-Forwarded-For ヘッダーを含めることはできません。100.100.100.200 はインスタンスメタデータサービスの IPv4 アドレスです。 $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 # インスタンスメタデータへのアクセス 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]
次の内容が返された場合、プロジェクトはインスタンスでインスタンス RAM ロール (ecs_ram_role) 認証情報を使用できます。
{ "AccessKeyId" : "AccessKeyIdValue", "AccessKeySecret" : "AccessKeySecretValue", "Expiration" : "2025-07-10T08:37:58Z", "SecurityToken" : "SecurityTokenValue", "LastUpdated" : "2025-07-10T02:33:26Z", "Code" : "Success" }別の認証情報に切り替える場合は、「アクセス認証情報の管理」をご参照ください。
この AccessKey は漏洩のリスクがあります
原因:応答にこのメッセージが含まれている場合、AK が漏洩するリスクがある可能性があります。Alibaba Cloud は AK に対して制限的な保護措置を講じています。
ソリューション:詳細については、「AccessKey 漏洩のソリューション」をご参照ください。
API フロー制御のためリクエストは拒否されました
原因:SDK があまりにも頻繁に呼び出されると、サーバーが「ThrottlingException」などのエラーを返す可能性があります。
解決策:
リクエストのリトライメカニズムを実装し、必要に応じてリクエスト間の時間間隔を増やして負荷を軽減します。
コードロジックを最適化します。API リクエストの数を減らすために、バッチ処理または非同期呼び出しの使用を検討してください。
アクセスポリシーのため指定された AccessKey は拒否されました
原因:AccessKey ネットワークアクセス制限ポリシーが設定されています。このポリシーは、永続的な AccessKey を使用して API リクエストを行うことができる送信元 IP アドレスを制限します。
解決策:
AccessKey ネットワークアクセス制限ポリシーの IP アドレス範囲を変更します。
AccessKey ネットワークアクセス制限ポリシーを有効にしないでください。
詳細については、「AccessKey ネットワークアクセス制限ポリシー」をご参照ください。
com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId : アクセスするエンドポイントが見つかりません
原因:`regionId` が正しくないなど、パラメーター設定が正しくないと、サービスが失敗したりエラーを返したりする可能性があります。
解決策:
Alibaba Cloud が提供するドキュメントとコード例を参照して、エンドポイント、RegionId、その他のリクエストパラメーターなど、すべての設定パラメーターが正しく入力されていることを確認してください。
OpenAPI Developer Portal で API をデバッグできます。デバッグが成功したら、完全なサンプルプロジェクトコードをダウンロードしてローカルでデバッグします。
基本的な Java 例外のチェックリスト
エラーメッセージ | 原因 | 解決策 |
NullPointerException | null オブジェクトのメソッドを呼び出そうとしたか、プロパティにアクセスしようとしました。 | オブジェクトを使用する前に、null チェックを実行して NullPointerException を回避します。チェックには条件付きステートメントまたはアサーションを使用できます。 |
ArrayIndexOutOfBoundsException | 配列に存在しないインデックスにアクセスしようとしました。 | 配列インデックスが有効な範囲内 (0 以上、配列の長さ未満) であることを確認します。ループ条件を制御するか、インデックス範囲を手動でチェックして、範囲外の配列インデックス例外を回避できます。 |
IllegalArgumentException | メソッドが不正な引数を受け取りました。 | メソッドに渡されたパラメーターをチェックして、メソッドの要件を満たしていることを確認します。条件付きステートメントまたはアサーションを使用して、パラメーターの有効性をチェックできます。 |
ArithmeticException | ゼロによる除算など、算術演算で例外が発生しました。 | 算術演算を実行する前に、必要なチェックと処理を実行して、例外が発生しないことを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、算術例外を処理できます。 |
ClassCastException | オブジェクトを互換性のない型にキャストしようとしました。 | 型キャストを実行する前に、instanceof オペレーターを使用して型をチェックし、オブジェクトの型に互換性があることを確認します。型に互換性がない場合は、適切な型キャストを使用するか、オブジェクトの継承関係を再設計することを検討してください。 |
FileNotFoundException | 存在しないファイルを開こうとしました。 | ファイルパスとファイル名が正しいこと、および指定された場所にファイルが存在することを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、ファイルが見つからない例外を処理できます。 |
IOException | ファイルの読み取りまたは書き込み、ネットワーク通信などの入出力操作中に例外が発生しました。 | 入出力操作の正しさをチェックし、ファイルまたはリソースが利用可能であることを確認し、考えられる例外を処理します。例外処理メカニズムを使用して、入出力例外を処理できます。 |
InterruptedException(割り込み例外) | マルチスレッド操作中にスレッドが予期せず中断されました。 | マルチスレッド操作を処理するときは、スレッドの中断を適切に処理します。例外処理メカニズムまたは条件付きステートメントを使用して、スレッド中断例外を処理できます。 |
NoSuchMethodException | 存在しないメソッドを呼び出そうとしました。 | メソッド名とパラメーターが正しいことを確認し、呼び出されているメソッドが存在することを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、メソッドが見つからない例外を処理できます。 |
NumberFormatException | 数値に変換できない文字列を数値に変換しました。 | 文字列を数値に変換するときは、まず合理的なチェックを実行して、文字列が正しく数値に変換できることを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、数値フォーマット例外を処理できます。 |
IndexOutOfBoundsException | リストまたは文字列に存在しないインデックスにアクセスしようとしました。 | インデックスが有効な範囲内 (0 以上、リストまたは文字列の長さ未満) であることを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、インデックス範囲外例外を処理できます。 |
UnsupportedOperationException | サポートされていないメソッドまたは操作を呼び出そうとしました。 | ドキュメントまたは API ドキュメントを参照して、サポートされているメソッドと操作を理解します。現在の環境でメソッドまたは操作が実行可能であることを確認してください。 |
IllegalMonitorStateException | 不適切なタイミングで wait()、notify()、または notifyAll() メソッドを呼び出しました。 | 同期されたコードブロックで wait()、notify()、または notifyAll() メソッドを正しく使用していることを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、不正なモニター状態例外を処理できます。 |
SecurityException | 不正アクセスやファイル権限など、セキュリティルールに違反する操作を実行しようとしました。 | コード内のセキュリティルールをチェックして、違反していないことを確認します。セキュリティルールに従って、対応する調整と変更を行うことができます。 |
ClassNotFoundException | 存在しないクラスをロードしようとしました。 | SDK では、これは通常、依存関係の競合であり、複数の依存関係バージョンが共存し、クラスローダーが誤ったバージョンのクラスをロードする原因となります。クラス名とクラスパスが正しいことを確認し、必要なクラスが存在することを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、クラスが見つからない例外を処理できます。 |
NoSuchFieldException | 存在しないフィールドにアクセスしようとしました。 | SDK では、これは通常、依存関係の競合であり、下位バージョンの依存関係がインデックスで優先され、V2.0 SDK メソッドが存在しない原因となります。フィールド名が正しいこと、およびアクセスされているフィールドが存在することを確認します。条件付きステートメントまたは例外処理メカニズムを使用して、フィールドが見つからない例外を処理できます。 |
テクニカルサポート
上記のソリューションは、Alibaba Cloud SDK の使用に役立ちます。他の問題が発生した場合は、次の方法でお問い合わせください。
チケットの提出: Alibaba Cloud チケット提出ページ。
関連するニーズやフィードバックがある場合は、DingTalk グループを追加して Alibaba Cloud テクニカルサポートにご連絡いただけます。グループ番号は 60965016010 です。