初始化
AiSession 通过静态工厂创建,不使用 new。实现 AutoCloseable,用 try-with-resources。
打开时按 PayloadKind × 硬件 × preferProvider 选 Provider;对应包未装则内部调一次 darra_runtime_ensure(无进度回调,可能阻塞下载)。指名但不可用 = fail-closed,绝不静默降级。
Windows 收到 rknn 载荷 → AiException.UnsupportedPayloadException。Windows 上指名 edge-rknn → AiException.UnsupportedPlatformException。RKNN 只在 linux-arm64。
Paddle 是运行时载荷(PayloadKind=paddle)。明文入口可接 .pdmodel。
本绑定没有 openPlainEx。
工厂方法
AiSession.open(String containerPath, String keyPath, String password, String preferProvider)
public static AiSession open(String containerPath,
String keyPath,
String password,
String preferProvider)
打开加密容器(.darmodel,DARM1)建会话。
参数:
containerPath(String) —.darmodel路径。空/null =InternalExceptionkeyPath(String) —.darmkey;null = 走密码 / 试用通道password(String) — 永久密码;null = 走授权文件 / 试用通道。两个通道至少给一个;都给则 key 文件优先验票preferProvider(String) — 指名 Provider;null = 自动选。指名但不可用 = fail-closed,绝不静默降级
返回值:
AiSession— 新会话,须close/ try-with-resources
典型错误:IoNotFound / IoDenied / BadContainer / BadLicense / PasswordRequired / PasswordWrong / MachineMismatch / TrialExhausted / UnsupportedPayload / ProviderMissing / ProviderAbiMismatch / HardwareMissing / DriverTooOld / NetworkFailed / ChecksumMismatch / Cancelled(后三码来自内部 ensure)。
示例:
try (AiSession s = AiSession.open("model.darmodel", "model.darmkey", null, null)) {
System.out.println(s.metaJson());
}
AiSession.openPlain(String onnxPath, String preferProvider)
public static AiSession openPlain(String onnxPath, String preferProvider)
打开明文模型建会话。与 open 同一推理路径,只跳过容器解码与验票。
参数:
onnxPath(String) — 历史参数名,语义为明文模型路径。空/null =InternalException.onnx文件.pdmodel文件(同目录须有对应.pdiparams)- 含
*.pdmodel+*.pdiparams的目录
preferProvider(String) — 指名 Provider;null = 按载荷 × 硬件 × 已装包自动选
返回值:
AiSession— 新会话
.pt / .pth 仍拒 → UnsupportedPayloadException。Paddle 是运行时载荷,不走这条拒绝路径。其余(含内部 ensure、fail-closed)同 open。
示例:
try (AiSession s = AiSession.openPlain("model.onnx", "onnx-cpu")) {
// …
}
try (AiSession paddle = AiSession.openPlain("model.pdmodel", null)) {
// 同目录须有 model.pdiparams
}
AiSession.openEx(String containerPath, SessionOptions options)
public static AiSession openEx(String containerPath, SessionOptions options)
打开加密容器建会话(带选项)。options 为 null 时等同 SessionOptions.empty()。
当前翻译到 open(containerPath, opt.keyPath(), opt.password(), opt.preferProvider())。Core 落地 darra_session_open_ex 后只换调用点,本类型已公开字段不变。字段见 类型 · SessionOptions。
C 头 darra_session_options 的 intra_op_threads / inter_op_threads / cpu_affinity_mask 尚未出现在本 Java 类型上,本方法不会把它们传给 native。
参数:
containerPath(String) —.darmodel路径(必填)options(SessionOptions) — 可选通道;null = 全空
返回值:
AiSession— 新会话
示例:
SessionOptions opt = SessionOptions.empty()
.keyPath("model.darmkey")
.preferProvider(null);
try (AiSession s = AiSession.openEx("model.darmodel", opt)) {
// …
}