You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ObjectBox从Java连接到服务器实例?同步报错求助

解决ObjectBox Sync "sync not supported" 错误

核心原因

这个错误通常是因为未正确引入ObjectBox Sync依赖,或者BoxStore未以支持Sync的方式构建,导致Sync功能不可用(Sync.isAvailable()返回false)。

解决步骤

1. 确认引入正确的Sync依赖

ObjectBox Sync是独立于核心库的模块,必须单独引入,且版本要和ObjectBox核心库完全一致:

  • Gradle项目:
    在build.gradle中添加Sync依赖:

    implementation "io.objectbox:objectbox:你的核心库版本"
    implementation "io.objectbox:objectbox-sync:你的核心库版本"
    
  • Maven项目:
    在pom.xml中添加Sync依赖:

    <dependency>
        <groupId>io.objectbox</groupId>
        <artifactId>objectbox</artifactId>
        <version>你的核心库版本</version>
    </dependency>
    <dependency>
        <groupId>io.objectbox</groupId>
        <artifactId>objectbox-sync</artifactId>
        <version>你的核心库版本</version>
    </dependency>
    

2. 构建支持Sync的BoxStore

确保BoxStore的构建过程中启用Sync支持,有两种方式:

方式一:直接通过Sync配置构建BoxStore

// 直接在BoxStore构建时配置Sync客户端
BoxStore boxStore = MyObjectBox.builder()
        .name("TestEntity-db")
        .syncClient("ws://12.456.672.89:9999", SyncCredentials.none())
        .build();
Box<TestEntity> box = boxStore.boxFor(TestEntity.class);

方式二:先构建BoxStore再创建SyncClient

如果需要后续动态配置Sync,要确保BoxStore是支持Sync的(依赖正确引入后默认支持):

BoxStore boxStore = MyObjectBox.builder().name("TestEntity-db").build();
// 先验证Sync是否可用
if (Sync.isAvailable()) {
    SyncClient syncClient = Sync.client(boxStore, "ws://12.456.672.89:9999", SyncCredentials.none()).buildAndStart();
} else {
    // 提示依赖未正确引入
    System.err.println("Sync依赖未正确加载,请检查依赖配置");
}

3. 版本兼容性检查

确保ObjectBox核心库、Sync库、以及注解处理器(如果用了)的版本完全一致,版本不匹配会导致Sync功能无法正常启用。

4. 验证运行环境

ObjectBox Sync支持Java 8及以上版本,确认你的运行环境符合要求,避免因JDK版本过低导致功能不可用。


内容的提问来源于stack exchange,提问作者Saranya Karuppasamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:27