Scala使用Snowpark 1.4.0连接Snowflake运行报错排查
Snowpark Scala 初始化抛出 ExceptionInInitializerError 问题修复
根因
从异常栈的触发链路可以直接定位核心问题:
- 框架首先触发了
MISC_SCALA_VERSION_NOT_SUPPORTED(Scala版本不受支持)的校验错误 - Snowpark 1.4.0 存在低版本bug:在会话未创建的初始化阶段抛出异常时,异常构造逻辑强依赖活跃会话实例,触发空指针,最终把真实的版本不兼容问题包装成了
ExceptionInInitializerError,表层的NPE是异常处理逻辑bug导致的干扰信息。
你当前配置存在两个直接触发问题的点:
- 项目使用的Scala版本不在Snowpark 1.4.0的支持范围内:该版本仅兼容Scala 2.12.x 系列,不支持Scala 2.11、2.13、Scala 3全系列版本
- sbt依赖引入方式错误:使用
%引入依赖不会自动拼接Scala编译版本后缀,会拉取到和当前项目Scala版本不匹配的依赖包
修复方案
按顺序调整配置即可:
- 在
build.sbt中明确指定项目Scala版本为2.12系列稳定版:
scalaVersion := "2.12.15"
- 修改Snowpark依赖引入规则,将单百分号
%替换为双百分号%%,让sbt自动拉取匹配当前Scala版本的依赖包:
"com.snowflake" %% "snowpark" % "1.4.0"
- 刷新sbt依赖、重新编译项目后即可正常运行。
其他说明
你编写的连接测试代码本身没有逻辑错误,填入的连接参数只要真实有效,版本配置正确后就能正常执行show tables的查询逻辑。
内容的提问来源于stack exchange,提问作者Mukul Kumar
相关产品推荐
相关产品推荐

