2011-05-11 48 views
6

我在Windows XP專業機器上運行多個java進程。當我嘗試通過本地JConsole連接到這些進程時,進程變灰。當嘗試通過JMX進行連接時,本地java進程變灰

但是我可以在另一臺機器上運行相同的進程,並通過該機器上的本地JConsole進行連接。

兩臺機器都爲進程和jconsole運行java 1.6版本。

任何想法爲什麼這些過程變灰?

+0

都運行相同版本的Java 1.6的機器?我有一個模糊的回憶,在某些jdk 1.6版本中存在一些與此相關的錯誤。 – jtahlborn 2011-05-11 17:08:01

+0

我使用完全相同的JDK從同一個目錄運行了一個進程和jconsole。仍然那個過程顯示灰色。 – richs 2011-05-11 17:33:29

+0

對,我問是否2個不同的盒子使用相同版本的jdk。 – jtahlborn 2011-05-11 18:44:08

回答

2

如果進程以不同的用戶身份運行(例如,如果將他們作爲服務啓動),那麼您將無法連接到它們。另外,如果他們是在一個較老的jvm下運行的,你很可能也無法與他們交談。

在某些情況下,本地jmx通信機制使用本地文件系統,並且如果權限未正確定義可能會出現問題。你可能在聯網的文件系統(nfs,samba)上運行這些進程嗎?

2

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

應用不屬於可連接,禁用管理代理。其中包括在J2SE 1.4.2平臺上啓動的應用程序,或者在沒有-Dcom.sun.management.jmxremotecom.sun.management.jmxremote.port選項的J2SE 5.0平臺上啓動的應用程序。 這些應用程序在表格中灰顯了,JConsole無法連接到它們。在圖3-1所示的示例連接對話框中,Anagrams應用程序以J2SE 5.0平臺VM啓動,沒有任何管理屬性來啓用JMX代理,因此顯示爲灰色且無法選擇。

Figure 3-1 Creating a Connection to a Local Process http://download.oracle.com/javase/6/docs/technotes/guides/management/figures/connect.gif

儘管什麼東西被寫在文件中,最有可能你的過程,是一個不同的用戶下運行。您可以以管理員身份運行jconsole,然後嘗試。

+0

我打開了Windows任務管理器和jconsole,我的java進程都是針對同一個用戶的。 – richs 2011-05-11 16:57:32

+0

嗨托馬斯 - 以管理員身份運行jconsole不能解決問題(儘管我會認爲它會)。你碰到過這個嗎?有趣的是,以管理員身份運行Process Explorer使其能夠查看此特定Java進程的進程信息。解決方法是使用'com.sun.management.jmxremote.port'並使用「Remote Process」進行連接,但對我來說這不是一個最佳解決方案,因爲我有很多進程正在運行併爲其分配唯一的端口是有問題的。 – sourcedelica 2014-07-05 17:51:46

16

我這個問題,現在的戰鬥,我發現了一個變通:

您可以將本地用戶的臨時目錄改變的東西,肯定可以訪問(如d:\ TEMP)。確保爲您要監控的進程和jconsole進程執行此操作。

另一件可能會導致問題的東西是大寫字母的用戶名。該目錄將始終使用全部小寫字母創建,但只需將其重命名爲其在任務管理器中的顯示方式,即可消除所有問題:http://planeofthought.com/wp/?p=75

+1

謝謝RegRog。您的編輯鏈接完成了+1的技巧。 (我仍然不喜歡告訴我的用戶重命名文件夾)。將hsperfdata_ 目錄的名稱更改爲hsperfdata_ 爲我工作。 – km1 2012-12-11 22:05:17

+0

這個爲我打了頭。我在重命名這個目錄時也遇到了一個問題,但是我能夠使用Sysinternals Process Explorer工具來確定我的SmartSVN副本的目錄已被鎖定。然後我關閉SmartSVN,重命名目錄,一切都很好。該目錄在正確的情況下重新創建。 – 2013-03-25 22:59:13

+0

儘可能地相信,這實際上工作!即將TEMP和TMP都設置爲c:\ temp。難以置信的。謝謝! – fool4jesus 2017-06-01 12:38:05

1

以下是我的工作原理。我將我的%TEMP%%TMP%環境變量更改爲指向我在我的%HOME%位置創建的文件夾(如C:\Users\[YOUR_NAME]\Temp)。一旦我做到了,所有問題都消失了。

2

說你用來啓動你的Java應用程序的Windows用戶名在任務管理器中看到的是YOUR_USER_NAME。 請在您的臨時文件夾中檢查名稱看起來像hsperfdata_XXXXX(XXXXX應該是您的用戶名)的文件夾,並確保YOUR_USER_NAME和XXXXX完全相同(請注意大寫和小寫)。

0

將環境變量中的TEMP路徑更改爲D:\ temp之類的內容,因爲它可能是許可問題。爲我解決這個問題

相關問題