# 下位互換性のあるJava API

> 下位互換性のあるJava API - 別のバージョンのDataRobotで作成されたモデルでのスコアリングコードの使用プロセスを確認します。

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-15T05:55:44.982808+00:00` (UTC).

## Primary page

- [下位互換性のあるJava API](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/scoring-code/java-back-compat.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [別のクラスローダーでモデルをロードする](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/scoring-code/java-back-compat.html.md#load-models-with-a-separate-class-loader): In-page section heading.

## Documentation content

このセクションでは、別のバージョンのDataRobotで作成されたモデルでのスコアリングコードの使用プロセスについて説明します。 同じバージョンで作成されたモデルの [例](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/scoring-code/quickstart-api.html.md#java-api-example) も参照してください。

1つのJavaアプリケーションに同じJVMランタイムに複数のDataRobotモデルをロードできます。 全てのモデルが同じバージョンのDataRobotで生成されていれば、これらのJARファイル（ `com.datarobot.prediction` パッケージ）に埋め込まれているモデルAPIを使用しても安全です。

さまざまなバージョンのDataRobotによって生成された複数のモデルをJVMプロセスでホストしている場合、いずれかのJARファイルから正しいバージョンのモデルAPIがロードされない可能性があります。

モデルをロードしようとすると、次のような例外が生成させることがあります。

```
Exception in thread "main" java.lang.IllegalArgumentException:
   Cannot find a` `predictor with the 5d2db3e5bad451002ac53318 ID.
```

さまざまなバージョンのDataRobotによって生成された複数のモデルを使用するには、以下に説明するCompatible Model APIを使用します。

1. datarobot-predictionおよびdatarobot-transformMavenリファレンスをプロジェクトに追加します。
2. すべてのクラスの名前空間をcom.datarobot.predictionからcom.datarobot.prediction.compatibleに変更します。

Compatible Model APIは、常に最新のAPIをサポートし、すべてのバージョンのDataRobotとの下位互換性があります。

Compatible Model APIを使用するコードの例を以下に示します。

```
import com.datarobot.prediction.compatible.IPredictorInfo;
import com.datarobot.prediction.compatible.IRegressionPredictor;
import com.datarobot.prediction.compatible.Predictors;

import java.util.HashMap;
import java.util.Map;

public class Main {

public static void main(String[] args) {
   // data is being passed as a Java map
   Map<String, Object> row = new HashMap<>();
   row.put("a", 1);
   row.put("b", "some string feature");
   row.put("c", 999);

   // below is an example of prediction of a single variable (regression)

   // model id is the name of the .jar file
   String regression_modelId = "5d2db3e5bad451002ac53318";

   // get a regression predictor object given model
   IRegressionPredictor regression_predictor =
           Predictors.getPredictor(regression_modelId);

   double scored_value = regression_predictor.score(row);

   System.out.println("The predicted variable: " + scored_value);

   // below is an example of prediction of class probabilities (classification)

   // model id is the name of the .jar file
   String classification_modelId = "5d36ee03962d7429f0a6be72";

   // get a classification predictor object given model
   IClassificationPredictor predictor =
           Predictors.getPredictor(classification_modelId);

   Map<String, Double> class_probabilities = predictor.score(row);

   for (String class_label : class_probabilities.keySet()) {
       System.out.println(String.format("The probability of the row belonging to class %s is %f",
               class_label, class_probabilities.get(class_label)));
    }
  }
}
```

## 別のクラスローダーでモデルをロードする

JavaクラスパスにモデルのJARファイルを含めると、モデルのJARファイル内の依存関係と、アプリケーションコードや他のモデルのJARファイル内の依存関係が競合する可能性があります。 こうした競合を避けるために、 [getPredictor(ClassLoader classLoader)](https://javadoc.io/static/com.datarobot/datarobot-prediction/2.2.4/com/datarobot/prediction/compatible/Predictors.html#getPredictor(java.lang.ClassLoader%29) を使用して、実行時にファイルシステムからモデルをロードすることができます。

```
import com.datarobot.prediction.compatible.IRegressionPredictor;
import com.datarobot.prediction.compatible.Predictors;

String jarPath = "/path/to/model.jar";
ClassLoader classLoader = new URLClassLoader(
        new URL[] {new File(jarPath).toURI().toURL()}, 
        Thread.currentThread().getContextClassLoader()
);

IRegressionPredictor predictor = Predictors.getPredictor(classLoader); 
```
