На ум приходят две вещи:
1). Если у вас есть возможность запустить код C ++ как отдельный процесс (для связи используйте любой метод RPC), вы избежите этой проблемы, хотя и за счет производительности.
2). Вы находитесь в зависимости от разработчика C ++ / JNI. Большинство проблем, с которыми я столкнулся, находятся на «слое» слоя JNI. То есть у меня была достаточно стабильная, существующая библиотека, которую я обернул в JNI. Библиотека расстроится, если я случайно передам нулевые указатели в существующий код, и если мне не удастся проверить нулевые значения в ответ, у меня также могут возникнуть проблемы. Поэтому мы приложили много усилий для дезинфекции этого слоя оболочки. Везде, где была возможность непредвиденных результатов, мы добавили проверку.
Конечно, если вся библиотека новая, тогда жизнь сложнее - в конце концов, вам просто нужно создать надежный код.