вы че совсем там?
jni требует очень нехуевые понимания в работе мемори менеджмента, специфики идентификации классов, мемберов КАК минимум.при этом ошибки обрабатываются явно и не перехватываются обработчиками плюсов.при этом нет никаких стактрейсов при возникновении каких либо ошибок, управление просто улетает в ваш метод где установлен pendingexception в структуре виртуального потока джавы, а дальше ебись как хочешь.
jni используют для написания того, что не получится написать на джаве из-за абстрактного представления окружения в котором запущена jvm(а скорее оно вообще игнорируется, потому что главное правило джавы - 1 раз написано, запускается везде)
P.S если вам так не нравится джава но вы хотите с ней работать - лучше просто смиритесь, либо выберите другой язык базирующийся на jvm(kotlin, groovy и тд).Просто НЕ факт что у вас что либо получится в них, ибо джава является МАКСИМАЛЬНО простым языком(для уровня где люди пишут моды)