Java 8环境下Pepper安卓设备运行TensorFlow Lite出现NoSuchMethodError求助
问题原因
核心是TensorFlow Lite相关依赖版本不匹配:你引入的org.tensorflow:tensorflow-lite-task-vision为nightly快照版本,该版本依赖的tensorflow-lite-support库中,ColorSpaceType类新增了getValue()方法;但你显式引入的tensorflow-lite-support和tensorflow-lite-metadata为0.1.0稳定版,该版本的ColorSpaceType不存在getValue()方法,运行时调用方法失败就抛出了对应的致命异常。
解决方法
- 统一所有TensorFlow Lite相关依赖的版本,不要混用快照版和旧稳定版,将build.gradle的dependencies块中相关依赖替换为同版本的正式发布版即可,参考修改如下:
// 替换原有三个tflite相关依赖 implementation 'org.tensorflow:tensorflow-lite-support:0.4.4' implementation 'org.tensorflow:tensorflow-lite-metadata:0.4.4' implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
- 修改完成后同步Gradle,执行清理项目、重建操作,排除旧缓存的影响。
- 优化建议:当前
runDetection方法每次执行都会重新创建ObjectDetector实例,该初始化操作开销较高,建议将ObjectDetector的初始化逻辑移到页面/应用初始化阶段,仅创建一次实例,后续检测时复用即可,可大幅提升检测效率,减少资源消耗。
内容的提问来源于stack exchange,提问作者George Karageorgiou
相关产品推荐
相关产品推荐

