Напишите оболочку C для взаимодействия с PAM и в реализации используйте JNI для вызова экземпляра JVM.
Обертки для запуска JVM были очень популярны, когда люди все еще хотели предоставлять «exe», которые действительно запускали программы в JAR. Вы захотите посмотреть, что обычно не делается с JNI, вызывая JVM из двоичного исполняемого файла; к сожалению, большинство инструкций JNI сосредоточены на вызове кода C из Java.
Хороший пример того, как создать JVM из кода C, можно найти здесь . Превращение модуля кода C в библиотеку общих объектов PAM займет немного времени, но вряд ли это будет слишком сложно.
Наконец, не забывайте, что JNI использует и возвращает типы Java для большинства своих операций. Это означает, что вам придется читать типы данных «C» (возможно, char *) и создавать строки Java, прежде чем передавать их в JVM. То же самое верно для получения информации из Java и ее передачи обратно в библиотеки PAM.
Удачи!