Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找java应用程序使用的java选项_Java_Parameters_Config_Options - Fatal编程技术网

查找java应用程序使用的java选项

查找java应用程序使用的java选项,java,parameters,config,options,Java,Parameters,Config,Options,有什么方法可以让我知道JVM中的java应用程序正在使用哪些java选项(例如,通过命令行传递的选项) 我想在应用程序从外部运行时动态查找它。Map env=System.getenv(); Map<String, String> env = System.getenv(); for (String envName : env.keySet()) { System.out.format("%s=%s%n", envName, env.get(envName)); } for

有什么方法可以让我知道JVM中的java应用程序正在使用哪些java选项(例如,通过命令行传递的选项)

我想在应用程序从外部运行时动态查找它。

Map env=System.getenv();
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
    System.out.format("%s=%s%n", envName, env.get(envName));
}
for(字符串envName:env.keySet()){ System.out.format(“%s=%s%n”,envName,env.get(envName)); }
我认为Java不支持“拦截”方法参数,JVM中不会记录或拦截方法参数

但是,您可以使用此线程的另一个答案中的System.env示例轻松打印发送给正在运行的类的参数。

但是,如果您可以控制实际的应用程序源代码,则可以按照以下说明操作:

这将允许您记录并截获发送到main方法的参数

您可以使用JMX:

final JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(connectorAddress));
final MBeanServerConnection mBeanServerConnection = connector.getMBeanServerConnection();
final ObjectName commandLine = new ObjectName("java.lang:type=Runtime");
final List<Attribute> arguments = mBeanServerConnection.getAttributes(commandLine, new String[] {"InputArguments"}).asList();
String[] inputArguments = (String[]) arguments.get(0).getValue();
System.out.println(Arrays.asList(inputArguments));
connector.close();
final JMXConnector connector=JMXConnectorFactory.connect(新的JMXServiceURL(connectorAddress));
最终MBeanServerConnection MBeanServerConnection=connector.getMBeanServerConnection();
最终ObjectName命令行=新的ObjectName(“java.lang:type=Runtime”);

“最终列表”很有用。

使用JMX。它允许从应用程序内部和外部获取选项、属性等


这就是您想要的吗?谢谢您的回答,但我想知道这是否可能从应用程序外部实现。这不是问题所要问的,海报想要的是JVM参数,而不是任何特定方法的参数。