すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:コネクタのローカルデバッグ

最終更新日:Aug 21, 2026

IntelliJ IDEA でコネクタを使用する Realtime Compute for Apache Flink プログラムをデバッグすると、デフォルトのコネクタ JAR はランタイムクラスを省略しています。このため、実行時に ClassNotFoundException が発生します。以下に例を示します:

Caused by: java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.odps.newsource.split.OdpsSourceSplitSerializer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

これを解決するには、コネクタの uber JAR をクラスパスに追加し、IntelliJ IDEA でクラスローダー JAR を設定します。

事前準備

  • クラウドにデプロイする前に pipeline.classpaths を削除してください。 この設定はローカルデバッグ専用です。コンパイルされた JAR にこの設定を残したまま Realtime Compute for Apache Flink にアップロードすると、エラーが発生します。

  • フレームワークバージョンが 1.17-vvr-8.0.11-1 より前の MaxCompute コネクタの場合: ローカルデバッグには 1.17-vvr-8.0.11-1 の uber JAR を使用します。クラウドデプロイ用に JAR をビルドする際は、古いバージョンのコネクタ uber JAR を含めて、新しいフレームワークバージョンでのみサポートされるコネクタオプションはすべて削除してください。

  • MySQL コネクタ: 以下の手順に加えて、「MySQL DataStream のデバッグ」で説明されているように Maven の依存関係を設定してください。

  • ネットワーク接続: Flink アプリケーションは、アップストリームおよびダウンストリームシステムに到達できる必要があります。これらのサービスを同じネットワーク上でローカルに実行するか、Flink がインターネット経由でクラウドサービスに到達できることを確認し、デバイスのパブリック IP アドレスをそれらのサービスの許可リストに追加してください。

ステップ 1:コネクタの uber JAR の追加

デフォルトのコネクタ JAR は、サードパーティのランタイムクラスを除外する thin JAR です。uber JAR は、ローカルデバッグに必要なすべてのランタイムの依存関係をバンドルします。

Maven セントラルリポジトリからコネクタの uber JAR をダウンロードしてください。たとえば、バージョン 1.17-vvr-8.0.11-1 の MaxCompute コネクタを使用している場合、Maven セントラルリポジトリのディレクトリから ververica-connector-odps-1.17-vvr-8.0.11-1-uber.jar をダウンロードしてください。

ダウンロード後、実行環境を取得する際に、pipeline.classpaths パラメーターを uber JAR のローカルパスに設定してください。

パス形式 例
単一の JAR file:///path/to/a-uber.jar
複数の JAR (セミコロン区切り) file:///path/to/a-uber.jar;file:///path/to/b-uber.jar
Windows パス (ドライブ文字を含む) file:///D:/path/to/a-uber.jar;file:///E:/path/to/b-uber.jar

DataStream プログラムの場合:

Configuration conf = new Configuration();
conf.setString("pipeline.classpaths", "file://<uber-jarへの絶対パス>");
StreamExecutionEnvironment env =
    StreamExecutionEnvironment.getExecutionEnvironment(conf);

Table API プログラムの場合:

Configuration conf = new Configuration();
conf.setString("pipeline.classpaths", "file://<uber-jarへの絶対パス>");
EnvironmentSettings envSettings =
    EnvironmentSettings.newInstance().withConfiguration(conf).build();
TableEnvironment tEnv = TableEnvironment.create(envSettings);

<absolute-path-to-uber-jar> を、ダウンロードした uber JAR のローカルパスに置き換えてください。

ステップ 2:IntelliJ IDEA でのクラスローダー JAR の設定

クラスローダー JAR を使用すると、Flink はローカル実行中にコネクタのランタイムクラスをロードできます。お使いの Ververica Runtime (VVR) バージョンに一致する JAR をダウンロードしてください:

VVR バージョン ダウンロード
VVR 6.x ververica-classloader-1.15-vvr-6.0-SNAPSHOT.jar
VVR 8.x ververica-classloader-1.17-vvr-8.0-SNAPSHOT.jar
VVR 11.2 ververica-classloader-1.20-vvr-11.2-SNAPSHOT.jar

ダウンロード後、IntelliJ IDEA で JAR を実行構成に追加してください:

  1. IntelliJ IDEA でプログラムファイルを開いてください。

  2. エントリクラスの左側にある緑色のアイコンをクリックして、メニューを展開してください。

  3. [Modify Run Configuration...] を選択してください。

  4. [Modify options] をクリックしてください。

  5. [Add Run Options] ドロップダウンリストで、[Java] セクションの [Modify classpath] を選択してください。[Modify classpath] セクションが表示されます。

  6. [Modify classpath] セクションで [+] をクリックし、[Include] を選択して、ダウンロードしたクラスローダー JAR を選択してください。

  7. (VVR 11.1 以降で必須) JVM オプションとして --add-opens java.base/jdk.internal.loader=ALL-UNNAMED を追加してください。

  8. 設定を保存してください。

共通の Flink クラスが欠落していることを示すエラーが発生した場合は、[Modify options] をクリックし、[Add dependencies with "provided" scope to classpath] を選択してください。

Table API ジョブのデバッグ (VVR 11.1 以降)

VVR 11.1 以降、Realtime Compute for Apache Flink のコネクタは、Apache Flink の flink-table-common パッケージと完全な互換性がなくなりました。Table API ジョブを実行すると、以下のエラーが発生する場合があります:

java.lang.ClassNotFoundException: org.apache.flink.table.factories.OptionUpgradabaleTableFactory

これを解決するには、pom.xml を更新し、org.apache.flink:flink-table-common を、正しいバージョンの com.alibaba.ververica:flink-table-common に置き換えてください。

次のステップ