Можно ли запустить образ выполнения Java с prunsrv в режиме jvm?
Предыстория: Начиная с Java 9 можно создавать пользовательские образы времени выполнения (программа JRE+) с помощью jlink.
Можно установить программы Java как службу Windows, используя prunsrv.exe (часть Apache Commons Daemon).
prunsrv можно использовать в трех режимах запуска: java, jvm и exe.
Мне удалось запустить пользовательский образ времени выполнения, используя режим exe и традиционную Java-программу (classpath + normal JDK), использующую режим jvm, но я не смог использовать режим jvm (который не запускает новый процесс) с образом,
У prunsrv есть параметр "JvmOptions9", который может быть подсказкой, что этот сценарий может поддерживаться, но я не уверен.
0 ответов
Сначала у меня была такая же проблема, но мне удалось ее решить. Хотя это старая проблема, я впервые нашел ее при поиске, поэтому я предоставлю свой ответ другим.
Я мог бы установить службу без проблем, но когда я пытался запустить ее в режиме jvm, она терпела неудачу и жаловалась, что "%1 не является допустимым приложением Win32". Ключевое слово здесь - Win32.
Существует две версии исполняемого файла prunsrv: одна в каталоге установки, а другая в подкаталоге amd64. Версия в каталоге установки поддерживает только 32-битный код, а версия в amd64 - для 64-битного кода. Prunsrv и версия Java должны быть 32-битными или 64-битными; Я пытался запустить 64-битную виртуальную машину Java из 32-битной службы prunsrv.
Другими словами, убедитесь, что используется правильная версия prunsrv для предполагаемой виртуальной машины Java. Благодаря этому я могу без проблем запускать модульное приложение Java 9 (или фактически 12) с урезанным образом времени выполнения.