У меня есть консольное приложение Java, которое запускается из пакетного скрипта в Windows и скрипта оболочки в Linux.В обоих случаях любые аргументы командной строки (которые являются сложными) просто передаются в приложение java, которое интерпретирует их с помощью Apache Commons CLI.
Теперь я хочу разрешить пользователям выделять дополнительную память для программы.Самым простым подходом может быть наличие дополнительного аргумента для этого (например, -m 1000), но есть недостатки.Теперь и пакетные, и командные сценарии должны будут интерпретировать командную строку, чтобы они могли извлечь аргумент из памяти и использовать его в качестве параметра -Xmx для JVM.Это фактически означает удовлетворение всей сложности разбора аргументов в 3 местах (batch / shell / java).
Единственный другой подход, который приходит на ум, - это заставить скрипты вызывать фиктивное приложение Java, которое используетсуществующую логику синтаксического анализа, чтобы найти новый аргумент, затем разветвите другую JVM для запуска основного приложения, используя правильный потолок памяти (используя Runtime.exec ()).Это могло бы обойти проблему дублирования кода.
Мой вопрос - это кажется кому-то плохой идеей?Возможно, есть вопросы, которые я не рассматриваю.