Gradle构建的SpringBoot Kotlin项目无法导入DJL的BufferedImageUtils类
问题原因
有两个核心原因导致你遇到Unresolved reference: BufferedImageUtils报错:
- 依赖版本不匹配:你当前使用的DJL 0.9.0是非常早期的版本,该版本中
ai.djl.modality.cv.util路径下根本不存在BufferedImageUtils类,相关能力被整合在NDImageUtils类中 - 缺少对应导入语句:即使类存在,你的代码中也没有添加对应类的import声明,也会触发未解析引用报错
解决方案
方案1:适配现有版本无需修改依赖(最快解决)
不需要额外添加任何依赖,直接替换调用的类即可,0.9.0版本的NDImageUtils已经内置了BufferedImage转NDArray的重载方法:
- 把代码中
BufferedImageUtils.toNDArray直接替换为NDImageUtils.toNDArray - 补充ctx参数的空安全处理避免空指针异常
修改后的processInput代码示例:
override fun processInput(ctx: TranslatorContext?, input: BufferedImage?): NDList { var array: NDArray? = NDImageUtils.toNDArray( ctx?.ndManager, input, NDImageUtils.Flag.COLOR ) array = NDImageUtils.resize(array, 224).div(255.0f) return NDList(array) }
方案2:升级DJL到稳定新版本(推荐长期使用)
0.9.0版本存在大量功能缺陷和兼容性问题,建议升级到最新稳定版本:
- 将Gradle依赖中所有
ai.djl:api、ai.djl.tensorflow开头的依赖版本统一升级到0.23.0,tensorflow-native-auto对应升级到2.15.0版本 - 在
DJLConfig.kt的导入语句部分添加import ai.djl.modality.cv.util.BufferedImageUtils即可正常使用该类
内容的提问来源于stack exchange,提问作者Mama
相关产品推荐
相关产品推荐

