От Java действительно ли возможно получить полную командную строку со всеми аргументами, которые запустили приложение?
System.getEnv()
и System.getProperties()
кажись, не содержать значения.
Некоторые из них доступны из RuntimeMXBean, полученные путем вызова ManagementFactory.getRuntimeMXBean ()
Затем вы можете, например, вызвать getInputArguments ()
Документы javadocs, для которых say:
Возвращает входные аргументы, переданные виртуальной машине Java, которая не включает аргументы основного метода. Этот метод возвращает пустой список, если у виртуальной машины Java нет входного аргумента.
Некоторые реализации виртуальной машины Java могут принимать входные аргументы из нескольких различных источников: например, аргументы, передаваемые из приложения, запускающего виртуальную машину Java, например команду «java», переменные среды, файлы конфигурации и т. Д.
Обычно не все параметры командной строки для команды java передаются виртуальной машине Java. Таким образом, возвращаемые входные аргументы могут не включать все параметры командной строки.
Вы можете узнать, как jps
это делает. Это программа Java, которая может получить полную командную строку для всех процессов Java, включая полное имя класса основного класса и параметры JVM.
Один из вариантов, который я использовал в прошлом для поддержания межплатформенного сияния, - это установить командную строку в качестве переменной среды до выполнения команды .
В Linux / UNIX это должно быть возможно, когда вы получаете результат этой команды (запускается в оболочке)
cat /proc/$PPID/cmdline
Но это совсем не переносимо и поэтому не должны использоваться в Java ...
Следующие ссылки могут помочь вам добраться туда:
Как получить аргументы командной строки для запуска process
получить командную строку запущенных процессов
Как получить список текущих открытых окон / процессов с помощью Java?
В качестве примечания:
В Windows у вас есть Process Explorer от Sysinternals , который показывает командную строку, используемую для открытия процесса. Щелкните процесс правой кнопкой мыши и выберите «Свойства». В открывшемся окне вы увидите командную строку.
Существует переменная окружения %~dp0, которая возвращает полный путь