Всегда есть старый резерв, JNI , известный тем, что он медленный и очень сложный в использовании.
JNA - это то, что я никогда не использовал лично, но "Я слышал хорошие вещи "и похоже, что это может соответствовать вашему счету.
Альтернативным и потенциально лучшим подходом было бы реструктурировать ваш код C ++ как сервис, который прослушивает, например, сокеты TCP или UNIX.Это увеличило бы переносимость, позволило бы подключиться к нему из большинства языков и не зависело от Java.