Avro 1.9.0 не удалось скомпилировать сгенерированный Java-код с сообщением об ошибке: не удается найти метод символа customEncode (org.apache.avro.io.Encoder) - PullRequest
0 голосов
/ 10 июля 2019

У меня есть две схемы:

DataRecord.avsc:
{
    "namespace": "com.mycompany",
    "type": "record",
    "name": "DataRecord",
    "fields": [
        {"name": "id", "type": ["null", "string"], "default": null},   
        {"name": "type", "type": ["null", "string"], "default": null},       
        {"name": "content", "type": ["null", "string"], "default": null},
        {"name": "error", "type": ["null", "com.mycompany.Error"], "default": null} 
    ]
}

Error.avsc:
{
    "namespace": "com.mycompany",
    "type": "error",
    "name": "Error",
    "fields": [
    ]
}

Он работал с Avro 1.8.2, но после того, как я обновил Avro 1.9.0, а затем попытался собрать, он не смог скомпилироваться и сгенерировал следующие журналы ошибок:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5:compile (default-compile) on project avro-error-type-missing-custom-coding: Compilation failure: Compilation failure:
[ERROR] /workspaces/myspace/avro-error-type-missing-custom-coding/target/generated-sources/avro/com/mycompany/DataRecord.java:[570,17] cannot find symbol
[ERROR] symbol:   method customEncode(org.apache.avro.io.Encoder)
[ERROR] location: variable error of type com.mycompany.Error
[ERROR] /workspaces/myspace/avro-error-type-missing-custom-coding/target/generated-sources/avro/com/mycompany/DataRecord.java:[608,19] cannot find symbol
[ERROR] symbol:   method customDecode(org.apache.avro.io.ResolvingDecoder)

Похоже, что SpecificRecordBase имеет методы customEncode() и customDecode() в Avro 1.9.0, но SpecificExceptionBase нет.

Как я могу исправить эту проблему?

...