如何获取启动该过程的命令行

从 Java,是否可以获取包含启动应用程序的所有参数的完整命令行?

System.getEnv()并且似乎不包含这些值。System.getProperties()


答案 1

其中一些可以从 RuntimeMXBean 获得,通过调用 ManagementFactory.getRuntimeMXBean() 获得。

然后,您可以调用getInputArguments()

Javadocs说:

返回传递给 Java 虚拟机的输入参数,该虚拟机不包括 main 方法的参数。如果 Java 虚拟机没有输入参数,则此方法返回空列表。

某些 Java 虚拟机实现可能从多个不同的源获取输入参数:例如,从启动 Java 虚拟机的应用程序传递的参数,如“java”命令、环境变量、配置文件等。

通常,并非所有“java”命令的命令行选项都传递到 Java 虚拟机。因此,返回的输入参数可能不包括所有命令行选项。


答案 2

在Linux中,当您获得该命令的输出时,这应该是可能的(在shell中运行)

cat /proc/$PPID/cmdline

但这根本不是可移植的,因此不应该在Java中使用......


推荐