if (rec != null) {
System.out.println(rec);
}
else {
System.out.println("rec is null");
// <-- here's your problem. you need to return, exit, or throw here!
}
// Start up the recognizer
rec.allocate(); // <-- This is the line that's blowing out (I assume)
Вы получите нулевой указатель, потому что, хотя вы еще обрабатываете случай, когда rec
равен нулю, ваша программа продолжается. Вам нужно вернуться или выйти, или что-то, когда rec
равно нулю.
Примечание: Кроме того, я переформатировал ваш код, потому что трудно прочитать ваш if / else. Если вы собираетесь использовать curlies на одной ветви вашего if / else, вы должны использовать curlies на обеих ветвях. Это делает его более читабельным.
Редактировать: О да, а почему createRecognizer
возвращается null
, боюсь, я не знаю.