ImageFactory实例创建失败:BitmapImageFactory类找不到问题求助
问题描述
读取本地Bitmap文件并执行目标检测时,调用ImageFactory.getInstance()创建实例失败,核心报错为找不到ai.djl.android.core.BitmapImageFactory类。
代码片段
val imageFactory1 = ImageFactory.getInstance()
报错信息
Caused by: java.lang.IllegalStateException: Create new ImageFactory failed!
Caused by: java.lang.ClassNotFoundException: ai.djl.android.core.BitmapImageFactory
Caused by: java.lang.ClassNotFoundException: Didn't find class "ai.djl.android.core.BitmapImageFactory" on path: DexPathList[[zip file "/data/app/com.example.imageclassification2-_snYrn7mbGjXlperEzCKWg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.imageclassification2-_snYrn7mbGjXlperEzCKWg==/lib/arm64, /data/app/com.example.imageclassification2-_snYrn7mbGjXlperEzCKWg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
核心原因
BitmapImageFactory是DJL(Deep Java Library)安卓适配包中负责处理Bitmap格式图像的实现类,当前项目未引入对应的DJL安卓依赖,导致系统找不到该类。
解决方案
1. 添加DJL安卓核心依赖
在Module级build.gradle文件中添加DJL安卓核心库依赖:
dependencies { // DJL安卓核心库,包含BitmapImageFactory实现 implementation 'ai.djl.android:core:0.25.0' // 若需目标检测功能,补充模型库依赖 implementation 'ai.djl.android:model-zoo:0.25.0' }
版本号可根据DJL官方最新稳定版调整。
2. 清理重建项目
添加依赖后执行以下操作:
- 点击Android Studio的
Build->Clean Project - 再点击
Build->Rebuild Project - 必要时重启Android Studio避免缓存干扰
3. 处理Multidex与混淆问题
如果项目启用了Multidex:
- 确认
build.gradle中Multidex配置开启:
android { defaultConfig { multiDexEnabled true } }
- 若存在混淆问题,在
proguard-rules.pro中添加规则:
-keep class ai.djl.android.core.BitmapImageFactory { *; }
补充说明
BitmapImageFactory是DJL专为安卓平台设计的图像工厂实现,负责将安卓Bitmap对象转换为DJL框架可处理的Image实例,是安卓环境下使用DJL处理图像的核心组件。
内容的提问来源于stack exchange,提问作者BharadX

