Kotlin Compose Desktop加载图片提示image.png资源找不到问题求助
Kotlin Compose for Desktop 图片资源加载失败解决方案
核心问题根因
useResource 接口默认读取的是项目src/main/resources目录下的资源,直接将图片放在src根目录无法被资源加载器识别,和框架实验性特性无关。
具体修复步骤
- 调整资源存放位置:在项目
src/main路径下新建resources文件夹(如果不存在的话),将image.png移动到该文件夹下,确保resources文件夹和同级的kotlin、java目录层级一致。 - 校验资源路径配置:
- 确认文件名拼写、大小写与代码中引用的字符串完全一致,资源加载对大小写敏感,比如文件名为
Image.png时写image.png会触发找不到的错误。 - 如果图片放在
resources的子目录中,需要补全路径,比如存放在resources/img下时,代码应写为useResource("img/image.png")。
- 确认文件名拼写、大小写与代码中引用的字符串完全一致,资源加载对大小写敏感,比如文件名为
- 检查构建配置:如果调整路径后仍报错,打开项目根目录的
build.gradle.kts,确认sourceSets配置中包含了resources目录,默认模板的配置如下,缺失的话补全即可:
sourceSets.main { resources.srcDirs("src/main/resources") }
优化代码示例
修复路径后原有代码可正常运行,也可以补充异常捕获逻辑避免资源不存在时崩溃:
val imageModifier = Modifier .height(240.dp) .fillMaxWidth() .clip(RoundedCornerShape(12.dp)) // 可选:添加异常捕获做降级处理 val imageBitmap = try { useResource("image.png") { loadImageBitmap(it) } } catch (e: Exception) { // 资源不存在时可返回默认占位图Bitmap,这里简化返回null null } imageBitmap?.let { Image( bitmap = it, contentDescription = "image", modifier = imageModifier, contentScale = ContentScale.Fit ) }
内容的提问来源于stack exchange,提问作者Tp323
相关产品推荐
相关产品推荐

