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

Apache Ignite 2.14.0能否脱离H2库运行?启动报错求助

问题

我在Apache Ignite 2.14.0版本的发布说明中看到:基于Calcite的SQL引擎已独立于基于H2的SQL引擎,不再需要将ignite-indexing模块和H2加入类路径。但启动最简Ignite实例时,却出现org.h2.value.ValueByte类找不到的错误。由于H2存在安全漏洞,我的Ignite应用已被迫停用,本以为2.14.0版本可摆脱H2,想请教是否能在无H2的情况下运行应用?

我使用Gradle管理依赖,依赖配置如下:

implementation fiels('/myfolder/apache-ignite/2.14.0/libs/ignite-core-2.14.0.jar')
implementation fiels('/myfolder/apache-ignite/2.14.0/libs/cache-api-1.0.0.jar')
implementation fiels('/myfolder/apache-ignite/2.14.0/libs/annotations-16.0.3.jar')
implementation fiels('/myfolder/apache-ignite/2.14.0/libs/ignite-spring/ignite-spring-2.14.0.jar')
implementation fiels('/myfolder/apache-ignite/2.14.0/libs/ignite-indexing/ignite-indexing-2.14.0.jar')

启动代码如下:

TcpDiscoveryMulticastIpFinder tcMp = new TcpDiscoveryMulticastIpFinder();
TcpDiscoverySpi spi = new TcpDiscoverySpi();
spi.setIpFinder(tcMp);
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setClientMode(false);
cfg.setDiscoverySpi(spi);
Ignite ignite=Ignition.start(cfg);

报错发生在最后一行Ignition.start(cfg);。

解决方案
  • 移除ignite-indexing依赖:你当前依赖中包含的ignite-indexing模块在2.14.0版本里仍默认依赖H2(用于兼容旧特性)。如果业务不需要SQL查询、索引等功能,直接删除这一行依赖即可,此时Ignite核心模块无需H2就能正常启动。
  • 需使用Calcite SQL引擎时的配置:如果要保留SQL功能,需保留ignite-indexing但排除H2依赖,同时在Ignite配置中明确指定使用Calcite引擎。
    Gradle依赖调整:
    implementation files('/myfolder/apache-ignite/2.14.0/libs/ignite-indexing/ignite-indexing-2.14.0.jar') {
        exclude group: 'com.h2database', module: 'h2'
    }
    
    Ignite配置补充:
    SqlConfiguration sqlCfg = new SqlConfiguration();
    sqlCfg.setSqlEngine(SqlEngine.CALCITE);
    cfg.setSqlConfiguration(sqlCfg);
    
  • 排查隐性依赖:执行gradle dependencies命令分析项目依赖树,确认是否有其他模块间接引入了H2,如有则对应排除。

内容的提问来源于stack exchange,提问作者Tao Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:20:32