You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中用OpenCSV解析CSV时遇找不到java.beans.Introspector类问题

解决Android使用OpenCSV报错Didn't find class "java.beans.Introspector"的问题

这个坑我之前踩过!你遇到的问题本质是:OpenCSV默认使用Java SE的java.beans.Introspector类来做JavaBean的内省映射,但Android SDK并不包含这个类,所以直接用默认的CsvToBeanBuilder就会抛出找不到类的错误。下面给你简单可行的解决方案:

方案:使用ColumnPositionMappingStrategy手动映射列与实体类字段

这是最直接的解决方案,完全避开内省机制,通过指定列顺序来绑定实体类字段,完美适配Android平台。

步骤1:确认你的实体类定义(示例)

data class csvDataClass(
    val name: String,
    val phone_one_value: String
)

步骤2:修改解析代码,添加手动映射策略

// 创建并配置映射策略
val mappingStrategy = ColumnPositionMappingStrategy<csvDataClass>().apply {
    type = csvDataClass::class.java
    // 按CSV文件的列顺序,依次对应实体类的字段名
    columnMapping = arrayOf("name", "phone_one_value")
}

// 使用映射策略构建解析器
val beans: List<csvDataClass> = CsvToBeanBuilder<csvDataClass>(FileReader(file))
    .withMappingStrategy(mappingStrategy)
    .withSkipLines(1) // 如果CSV第一行是表头,记得加上这句跳过表头
    .build()
    .parse()

// 遍历解析后的数据(用forEach比传统for循环更简洁)
beans.forEach { bean ->
    Log.d("Tag", "NAME = ${bean.name} Number = ${bean.phone_one_value}")
}

额外注意事项

  • 务必保证columnMapping数组的顺序和CSV文件的列顺序完全一致
  • 如果你的CSV没有表头,直接去掉withSkipLines(1)即可
  • 该方案适配所有Android版本,没有API等级限制

内容的提问来源于stack exchange,提问作者Pardeep Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:02:13