下面提到的代码应该显示所有 JVM 参数、传递给 main 方法的参数以及主类名。
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = bean.getInputArguments();
for (int i = 0; i < jvmArgs.size(); i++) {
System.out.println( jvmArgs.get( i ) );
}
System.out.println(" -classpath " + System.getProperty("java.class.path"));
// print the non-JVM command line arguments
// print name of the main class with its arguments, like org.ClassName param1 param2
System.out.println(" " + System.getProperty("sun.java.command"));
}
getInputArguments的 javadoc
返回传递给 Java 虚拟机的输入参数,其中不包括 main 方法的参数。如果 Java 虚拟机没有输入参数,则此方法返回一个空列表。
一些 Java 虚拟机实现可能会从多个不同来源获取输入参数:例如,从启动 Java 虚拟机的应用程序传递的参数,例如“java”命令、环境变量、配置文件等。
通常,并非“java”命令的所有命令行选项都传递给 Java 虚拟机。因此,返回的输入参数可能不包括所有命令行选项。
你也可以看看:jps
它是一个 Java 程序,能够获取所有 Java 进程的完整命令行,包括主类的完整类名和 JVM 选项。
您可以找到各种JVM 工具的很好的总结,包括
Java Application Launcher链接到: