Выяснение параметров Java, используемых приложением Java

Есть ли способ узнать, какие параметры Java используются приложением Java внутри JVM (например, те, которые передаются через командную строку)?

Я хочу найти его на лету, когда приложение запускается извне.


person raj_arni    schedule 16.11.2011    source источник
comment
это то, что вы ищете?   -  person NullUserException    schedule 16.11.2011


Ответы (4)


Вы можете использовать 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();

Чтобы получить соединение JMX, вы можете найти мой ответ на " клиент JMX, доступный только локально " полезно.

person laz    schedule 16.11.2011

Используйте JMX. Это позволяет получать параметры, свойства и т. д. как внутри, так и вне приложения.

jmx

person szhem    schedule 16.11.2011

Я считаю, что Java не поддерживает «ПЕРЕХОД» аргументов метода, аргументы метода не регистрируются и не перехватываются в JVM.

Однако вы можете легко распечатать аргументы, отправленные работающему классу, используя пример System.env в другом ответе в этой теме.

ОДНАКО, если у вас есть контроль над фактическим исходным кодом приложения, вы можете следовать приведенным здесь инструкциям: Как мне перехватить вызов метода со стандартными функциями Java (без AspectJ и т. д.)?

Это позволит вам регистрировать и перехватывать аргументы, отправляемые основному методу.

person jayunit100    schedule 16.11.2011
comment
Это не то, о чем задается вопрос, автору нужны аргументы JVM, а не аргументы какого-либо конкретного метода. - person jli; 16.11.2011

person    schedule
comment
Спасибо за ответ, но я хочу знать, возможно ли это вне приложения. - person raj_arni; 16.11.2011