9
votes

Les processus Java locaux sont grisés lorsque vous essayez de se connecter via JMX

Je gère un certain nombre de processus Java sur une machine professionnelle Windows XP. Lorsque j'essaie de vous connecter à ces processus via une JConsole locale, les processus sont grisés.

Cependant, je peux exécuter les mêmes processus sur une autre machine et connecter via une JConsole locale sur cette machine.

Les deux machines exécutent la version Java 1.6 pour les processus et JConsole.

Des idées Pourquoi ces processus sont grisés?


4 commentaires

Les deux machines fonctionnent-elles la même version de Java 1.6? J'ai un vague souvenir d'y avoir des bugs liés à ces trucs dans certaines des versions de JDK 1.6.


J'ai exécuté un des processus et de la JConsole en utilisant exactement le même JDK, à partir de ce même répertoire. Toujours ce processus montre gris.


Droite, je demande si les 2 boîtes différentes utilisent la même version du JDK.


J'ai essayé de désinstaller et de réinstaller une nouvelle version du JDK, et cela n'a toujours pas fonctionné. Mais j'ai remarqué qu'il y avait une classe de classe de système avec une référence à une bibliothèque Java pour QuickTime. J'aurais aimé l'avoir copié. Mais je n'ai pas installé QuickTime et maintenant tout fonctionne.


10 Réponses :


5
votes

Si les processus sont exécutés comme un utilisateur différent (par exemple, si vous les démarrez en tant que services), vous ne pourrez peut-être pas vous connecter à eux. De plus, s'ils fonctionnent sous une ancienne JVM, vous ne pourrez probablement pas leur parler non plus.

Dans certains cas, le mécanisme de communication JMX local utilise le système de fichiers local et peut avoir des problèmes si les autorisations ne sont pas définies correctement. Exécutez-vous éventuellement l'un de ces processus sur les systèmes de fichiers en réseau (NFS, Samba)?


0 commentaires

2
votes

de http://download.oracle. Com / Javase / 6 / Documents / Technotes / Guides / Gestion / JCONSOLE.HTML :

Applications qui ne sont pas attachables, avec l'agent de gestion désactivé. Celles-ci incluent des applications lancées sur une plate-forme J2se 1.4.2 ou lancée sur une plate-forme J2SE 5.0 sans le -dcom.sun.management.jmxremote ou com.sun.management.jmxremote.port options. Ces applications semblent grisées dans la table et JConsole ne peuvent pas se connecter à eux. Dans la boîte de dialogue Exemple de connexion illustrée à la figure 3-1, l'application Anagrames a été démarrée avec une plate-forme J2SE 5.0 VM sans aucune des propriétés de gestion pour activer l'agent JMX et, par conséquent, apparaît en gris et ne peut pas être sélectionné.

 Figure 3-1 Création d'une connexion à un processus local
(source: oracle.com < / a>)

Malgré ce qui est écrit dans la documentation, votre processus est probablement exécuté sous un autre utilisateur. Vous pouvez exécuter jconsole en tant qu'administrateur et essayer ensuite.


2 commentaires

J'ai ouvert le gestionnaire de tâches Windows et JConsole et mes processus Java sont tous pour le même utilisateur.


Salut Tomasz - Exécution de JConsole en tant qu'administrateur ne résout pas le problème (bien que je pense que cela). Avez-vous rencontré cela? Enregistrement de manière intéressante Explorateur de processus en tant qu'administrateur lui permet de voir les informations de processus pour ce processus Java particulier. La solution de contournement est d'utiliser com.sun.management.jmxremote.port.port et de vous connecter à l'aide de "processus distant", mais ce n'est pas une solution optimale pour moi, car j'ai de nombreux processus en cours d'exécution et l'attribuant des ports uniques à eux est problématique. .



21
votes

3 commentaires

Merci Regrogrog. Votre lien de votre édition a fait le tour +1. (Je n'aime toujours pas avoir à dire à mes utilisateurs de renommer le dossier). Changer le nom du répertoire HSperFData_ en hsperfdata_ a travaillé pour moi.


Celui-ci a frappé le clou sur la tête pour moi. J'ai également eu un problème de renommer ce répertoire, mais j'ai pu utiliser l'outil Sysinternernals Process Explorer pour déterminer que ma copie de SmartSVN avait le répertoire verrouillé. Ensuite, je viens de fermer SmartSvn, renommé le répertoire et tout allait bien. Le répertoire s'est recréé dans le bon cas.


Aussi difficile qu'il faut croire, cela a effectivement fonctionné! C'est à dire. Réglage Temp et TMP à la fois pour C: \ Temp. Incroyable. Merci!



1
votes

Voici ce qui a fonctionné pour moi. J'ai changé mon % Temp% et % TMP%% Variables d'environnement Pour pointer vers un dossier que j'ai créé dans mon % accueil% emplacement (comme C: \ utilisateurs \ [votre nom] \ temp ). Une fois que j'ai fait cela, tous les problèmes ont disparu.


0 commentaires

4
votes

Dites votre nom d'utilisateur Windows que vous utilisez pour démarrer votre application Java vu dans Task Manager est votre nom_utilisateur. Veuillez vérifier un dossier dont le nom ressemble à hsperfdata_xxxxx (xxxxx doit être votre nom d'utilisateur) dans votre dossier Temp et assurez-vous que votre_user_name et XXXXX sont exactement les mêmes (soyez prudent sur les majuscules et les minuscules).


0 commentaires

0
votes

Changez vos chemins de température dans des variables d'environnement à quelque chose comme D: \ Temp car cela pourrait être un problème de permission. Correction de ce problème pour moi


0 commentaires

1
votes

J'ai eu le problème comme décrit précédemment, mais a été conseillé à une solution plus simple: il suffit de fermer tous les programmes à l'aide de Java ("Intellij Idea", "SOPUI", etc. - Pour déverrouiller le dossier temporaire), puis supprimer % TMP% \ hsperfdata_ dossier. Ensuite, après avoir ouvert n'importe quel programme Java, ce dossier sera recréé mais cette fois avec nom correct (le plus probable % TMP% \ hsperfdata_ ). Et après cela, les processus de Java locaux peuvent être surveillés via "JConsole" ou "Visualvm" (maintenant s'exécute sans erreur de démarrage avec un lien vers VisualVM: Guide de dépannage ) à nouveau.


0 commentaires

1
votes

Au lieu de cette étape, vous pouvez simplement aller à la cmd, puis tapez JCONSOLE.exe (PID)

N'oubliez pas d'aller sur le chemin où JConsole est présent, puis exécutez le fichier exécutable.


0 commentaires

1
votes

Modifier le nom du dossier HSperFData qui a été trouvé pour moi sur C: \ users \ PMIMGG0 \ AppData \ local \ Temp \ hsperfdata_pmimgg0 pour correspondre au nom d'utilisateur trouvé sur le gestionnaire de tâches. Une fois que j'ai changé hsperfdata_pmimgg0 sur hsperfdata_pmimgg0, mon processus local n'était plus grisé sur JConsole.

 Entrez la description de l'image ici


0 commentaires

0
votes

Le meilleur moyen est de courir processus local comme un processus distant fort>.

Ajoutez ces conditions dans les arguments d'exécution - P>

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=6001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote.rmi.port=6001


0 commentaires