【问题标题】:NoSuchMethodError using jackson-dataformat-csvNoSuchMethodError 使用 jackson-dataformat-csv
【发布时间】:2017-06-28 00:38:11
【问题描述】:

我正在使用 jackson-dataformat-csv 读取一个 csv 文件,并且在尝试使用该行解析 mappingIterator 时出现 NoSuchMethodError

MyRecord record = (MyRecord) it.nextValue();

这个被剪掉了(稍作修改,删除了前处理)

    CsvMapper csvMapper = new CsvMapper();
    CsvSchema schema = csvMapper.schemaFor(MyRecord.class);

    @SuppressWarnings("rawtypes")
    MappingIterator<Entry> it = csvMapper.reader(MyRecord.class)
        .with(schema).readValues(filename);

    List<MyRecord> records = new ArrayList<>();
    while (it.hasNextValue()) {
        MyRecord record = (MyRecord) it.nextValue();
        records.add(record);
    }

https://github.com/FasterXML/jackson-dataformat-csv/issues/49
我的问题非常接近这个问题,除了我已经尝试过确保 jackson-core、jackson-databind、jackson-dataformat-csv 和 jackson-annotations 都是相同版本(2.8)的解决方案。看起来现在有一个 2.9 改变了事情,但在我的公司,我无法访问 2.9。还有其他一些我可能会发生冲突的包吗?

错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.util.BufferRecycler.allocCharBuffer(II)[C
at com.fasterxml.jackson.dataformat.csv.impl.TextBuffer.findBuffer(TextBuffer.java:160)
at com.fasterxml.jackson.dataformat.csv.impl.TextBuffer.emptyAndGetCurrentSegment(TextBuffer.java:404)
at com.fasterxml.jackson.dataformat.csv.impl.CsvDecoder.nextString(CsvDecoder.java:607)
at com.fasterxml.jackson.dataformat.csv.CsvParser._handleNextEntry(CsvParser.java:678)
at com.fasterxml.jackson.dataformat.csv.CsvParser.nextToken(CsvParser.java:523)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118)
at com.fasterxml.jackson.databind.MappingIterator.nextValue(MappingIterator.java:189)

【问题讨论】:

  • 你的'it'变量是如何定义的?
  • 对不起,这是一个非常糟糕的帖子——我的意思是至少粘贴实际的堆栈跟踪......我已经添加了我现在应该拥有的代码上下文。我不确定错误消息中的“(II)[C”代表什么,但如果我检查 BufferRecycler 的代码,我确实会看到几个 allocCharBuffer 方法。
  • 你在用maven吗?如果是这样,请尝试在您的项目文件夹中运行 mvn dependency:tree,以便查看依赖项是否真的正确。这会导致库版本问题。
  • 我的公司使用内部系统来进行分布式依赖管理——但它似乎是那个或 Eclipse 工作区的一些小故障。我创建了一个新的工作区,现在它似乎工作正常。不过感谢您的建议!

标签: java csv jackson jackson-dataformat-csv


【解决方案1】:

这个问题已经解决了,虽然我还不确定根本原因。我相信根本原因可能特定于我自己的用例(我的公司将其自己的内部系统用于本地开发工作区以及依赖管理。我最终创建了一个新的本地(和 Eclipse)工作区,并且似乎相同的代码现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2015-09-30
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多