Локальные процессы Java недоступны при попытке подключения через JMX - PullRequest
7 голосов
/ 11 мая 2011

Я запускаю несколько Java-процессов на компьютере с Windows XP Professional. Когда я пытаюсь подключиться к этим процессам через локальную JConsole, процессы отображаются серым цветом.

Однако я могу запустить те же процессы на другом компьютере и подключиться через локальную JConsole на этом компьютере.

На обеих машинах установлена ​​версия Java 1.6 для процессов и jconsole.

Есть идеи, почему эти процессы недоступны?

Ответы [ 8 ]

17 голосов
/ 20 апреля 2012

Я борюсь с этой проблемой прямо сейчас, и я нашел работу вокруг:

Вы можете изменить временный каталог локального пользователя на что-то, к чему он может определенно получить доступ (например, D: \ temp). Обязательно сделайте это для процесса, который вы пытаетесь отслеживать, и процесса jconsole.

Еще одна вещь, которая может вызывать проблемы, это имена пользователей с заглавными буквами в них. Каталог будет всегда создаваться со всеми строчными буквами, но простое переименование его в точности так, как оно отображается в диспетчере задач, устраняет все проблемы: http://planeofthought.com/wp/?p=75

5 голосов
/ 11 мая 2011

если процессы запущены от имени другого пользователя (например, если вы запускаете их как службы), вы не сможете подключиться к ним. Кроме того, если они работают под управлением более ранней версии jvm, вы, скорее всего, тоже не сможете с ними разговаривать.

в некоторых случаях локальный механизм связи jmx использует локальную файловую систему и может иметь проблемы, если разрешения не определены правильно. Возможно, вы выполняете какой-либо из этих процессов в сетевых файловых системах (nfs, samba)?

3 голосов
/ 11 ноября 2014

Скажите, что ваше имя пользователя Windows, которое вы используете для запуска java-приложения в диспетчере задач, - YOUR_USER_NAME. Пожалуйста, проверьте папку, имя которой выглядит как hsperfdata_XXXXX (XXXXX должно быть вашим именем пользователя) в вашей временной папке и убедитесь, что YOUR_USER_NAME и XXXXX точно такие же (будьте осторожны с прописными и строчными буквами).

2 голосов
/ 11 мая 2011

С http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html:

Приложения, которые невозможно подключить, с отключенным агентом управления. К ним относятся приложения, запущенные на платформе J2SE 1.4.2 или запущенные на платформе J2SE 5.0 без параметров -Dcom.sun.management.jmxremote или com.sun.management.jmxremote.port. Эти приложения отображаются серым цветом в таблице, и JConsole не может подключиться к ним. В диалоговом окне примера подключения, показанном на рис. 3-1, приложение Anagrams было запущено с виртуальной машиной платформы J2SE 5.0 без каких-либо свойств управления для включения агента JMX, и, следовательно, отображается серым цветом и не может быть выбрано.

Рисунок 3-1 Создание соединения с локальным процессом http://download.oracle.com/javase/6/docs/technotes/guides/management/figures/connect.gif

Несмотря на то, что написано в документации, скорее всего, ваш процесс выполняется под другим пользователем. Вы можете запустить jconsole как администратор и попробовать.

1 голос
/ 27 июня 2013

Вот что у меня сработало. Я изменил свои переменные окружения %TEMP% и %TMP%, чтобы они указывали на папку, которую я создал в моем местоположении %HOME% (например, C:\Users\[YOUR_NAME]\Temp). Как только я это сделал, все проблемы исчезли.

0 голосов
/ 21 февраля 2019

вместо этих шагов вы можете просто перейти в CMD и затем ввести jconsole.exe (PID)

Не забудьте перейти по пути, где присутствует jconsole, а затем запустить исполняемый файл.

0 голосов
/ 13 февраля 2019

У меня была проблема, как описано ранее, но мне посоветовали более простое решение: просто закройте все программы, использующие Java («IntelliJ IDEA», «SoapUI» и т. Д. - чтобы разблокировать временную папку), а затем удалите папку %TMP%\hsperfdata_<user.name>,Затем, после открытия любой Java-программы, эта папка будет воссоздана, но на этот раз с правильным именем (скорее всего %TMP%\hsperfdata_<User.Name>).И после этого локальные процессы Java можно отслеживать через «JConsole» или «VisualVM» (теперь снова запускается без запуска со ссылкой на VisualVM: Руководство по устранению неполадок ).

0 голосов
/ 28 апреля 2015

Измените пути TEMP в переменных среды на что-то вроде D: \ temp, так как это может быть проблемой с разрешениями. Исправлена ​​эта проблема для меня

...