Я пытаюсь генерировать классы avro java программно. Я определил файл схемы avro. Я вызываю объект SpecificSchemaCompiler с этой схемой, а затем вызываю метод compileToDestination (src, dest), чтобы получить сгенерированный класс. Однако я сталкиваюсь с исключением нулевого указателя.
С вышеупомянутой проблемой, с которой я столкнулся в существующей рабочей области. Поэтому я создал новый Java-проект в Eclipse и просто попробовал описанный выше подход. Там это сработало, и я получаю сгенерировать Java-файл.
Я использую следующую схему.
{
"тип": "запись",
"namespace": "gov.mrm",
"имя": "Клиент",
«doc»: «Схема Avro для нашего Заказчика»,
"поля": [
{"name": "first_name", "type": "string", "doc": "Имя клиента"},
{"name": "last_name", "type": "string", "doc": "Last Name of Customer"},
{"name": "age", "type": "int", "doc": "Age на момент регистрации"},
{"name": "height", "type": "float", "doc": "Высота на момент регистрации в см"},
{"name": "weight", "type": "float", "doc": "Weight на момент регистрации в кг"},
{"name": "automatic_email", "type": "boolean", "default": true, "doc": "Поле, указывающее, зарегистрирован ли пользователь в маркетинговых электронных письмах"}
]
}
Публичный класс Test {
public static void main(String[] args) throws IOException
{
SpecificCompiler compiler = new SpecificCompiler(new Schema.Parser().parse(new File("src/main/avro/customer.avsc")));
compiler.compileToDestination(new File("src/main/avro"), new File("src/main/java"));
}
}
Я получаю следующее исключение.
Исключение в потоке "main" java.lang.RuntimeException: java.lang.NullPointerException
в org.apache.avro.compiler.specific.SpecificCompiler.renderTemplate (SpecificCompiler.java:387)
в org.apache.avro.compiler.specific.SpecificCompiler.compile (SpecificCompiler.java:456)
в org.apache.avro.compiler.specific.SpecificCompiler.compileToDestination (SpecificCompiler.java:374)
at main.avro.Test.main (Test.java:14)
Вызывается: java.lang.NullPointerException
в org.apache.velocity.runtime.RuntimeInstance.getTemplate (RuntimeInstance.java:831)
в org.apache.velocity.runtime.RuntimeInstance.getTemplate (RuntimeInstance.java:813)
в org.apache.velocity.app.VelocityEngine.getTemplate (VelocityEngine.java:470)
в org.apache.avro.compiler.specific.SpecificCompiler.renderTemplate (SpecificCompiler.java:385)
... еще 3