Loading

「This Apex class has batch or future jobs pending or in progress」 エラー

公開日: May 1, 2026
説明
Apex クラスの編集時や、変更セット、UI、開発者コンソールなどで Apex コードをリリースする時に、次のエラーが発生する場合があります。

This Apex class has batch or future jobs pending or in progress (Apex クラスに待機中または処理中の一括処理ジョブまたは実行予定ジョブがあります)

通常このエラーは次のようなシナリオで発生します。
 
1. Schedulable に設定され、UI または System.schedule() メソッドを使用してスケジュールされたクラスを編集する時。
2. スケジュールされたクラスの execute() メソッドによって呼び出されるクラスを編集する時。
3. execute() メソッドで呼び出されたクラスから呼び出されるクラス、つまり連動関係のクラスを編集する時。
4. 変更セットなどで上記のクラスのいずれかをリリースする時。

ほとんどのシナリオで、クラスが後から実行されるようにスケジュールされているため、エラーが発生する可能性があり、発生します。クラスやクラスの連動関係が、手動、または、リリースにより編集されると、クラスが当初スケジュールしたものとは異なる動作をする可能性があります。この記事では、これらのシナリオで影響を受ける Apex クラスを編集するためのオプションについて説明します。
解決策

この問題のトラブルシューティングを行うには、まず、本番環境、もしくは、Sandbox で問題が発生しているかを判断する必要があります。
 

本番環境で問題が発生している場合

  1. エラーが発生しないようにするには、[リリース設定] [対応する Apex ジョブが待機中か処理中の場合、コンポーネントのリリースを許可します] を有効にします。

このオプションを使用すると、Apex ジョブによって参照されるコンポーネントをリリースすることができます。 この機能の詳細については、変更セットのリリース接続を参照してください。

注意: ユーザインタフェースまたは開発者コンソールを介してクラスを編集する際に発生する問題については、以下の 「Sandboxで問題が発生している」セクションの指示に従ってください。
 

 

Sandbox で問題が発生している場合

まず、Apex クラスの編集時に問題が発生しているのか、 もしくは、Sandbox でリリース実行時に問題が発生しているのかを判断する必要があります。

Apex クラスの編集時に問題が発生している場合

  • クラスや連動関係のクラスに関連するスケジュール済みジョブが分かっている場合は、[設定] | [ジョブ] | [スケジュール済みジョブ] からジョブを中止することができます。
  • エラーは連動関係のクラスが原因で発生する可能性があるため、エラーの発生元、または、スケジュール済みのクラスを知るために、連動関係のクラスを特定する必要がある場合があります。連動関係のクラスを表示するには、該当するクラスの [連動関係を参照] ボタンをクリックします。これで現在のクラスから呼び出されるクラスのみが表示されます。このクラスを呼び出すクラスを検索する場合は、開発者コンソールの [Search in Files] オプションを使用します。
  • 問題となるスケジュール済みジョブを見つけることができない場合は、開発者コンソールで以下の匿名 Apex コードを実行して、組織のすべてのスケジュール済みジョブを中止することもできます。

注意:

  • このコードを実行すると、組織のすべてのスケジュール済みジョブが削除されます。
  • これを実行した後、すべてのジョブを手動で再スケジュールする必要があります。
  • これを実行することによる影響が分からない場合は、貴社内の開発チームに確認してください。
  • CronTrigger ID の代わりに ScheduleJob ID を使用して System.AbortJob() を使用してジョブを中止する場合は、API バージョン 32.0 以下を使用してください。
List<CronTrigger> listCronTrigger = [select Id, CronExpression, EndTime, NextFireTime, OwnerId,
        PreviousFireTime, StartTime, State, TimesTriggered, TimeZoneSidKey from CronTrigger 
        where State = 'Waiting' or State='Running'];
        
System.debug('No of jobs: '+listCronTrigger.size());

If (listCronTrigger.size() > 0)
{
    for (Integer i = 0; i < listCronTrigger.size(); i++)
    { 
        System.abortJob(listCronTrigger[i].Id);
        System.debug('Job details ::'+String.valueOf(listCronTrigger[i]));
    }
}


​​​​​リリース中に問題が発生している場合
  1. [リリース設定] で、[対応する Apex ジョブが待機中か処理中の場合、コンポーネントのリリースを許可します] を有効にすることができます。


どちらの手順を実施しても問題を解決しない場合はどうすればよいですか?

エラーが引き続き発生する場合は、ケースを起票して、弊社サポートに記事番号 000342980 の記事に記載されている手順に従うように依頼してください。記事番号を伝えていただくことで、担当がお客様のリクエストに的確に対応することが可能になります。


参考情報:
Apex スケジューラ
 
ナレッジ記事番号

000384960

 
読み込み中
Salesforce Help | Article