Java jps进程信息不可用-jconsole和jvisualvm不工作

Java jps进程信息不可用-jconsole和jvisualvm不工作,java,jconsole,Java,Jconsole,windows更新后,我的jps、jconsole和jvisualvm不再工作 Jps给我进程ID,但它告诉我进程信息不可用 我无法像以前那样用jvisualvm连接到这些进程 我正在运行1.6.0_22 jre 我以前就有过这个问题,尝试过,它成功了。但这一次,运气不好,没有帮助 编辑: 我找到了一个解决方案:在我的临时文件夹中,我确实销毁了hsperfdata\uu文件夹。显然我的用户名有问题。该文件夹名为hsperfdata\u myname。在通过调用jps销毁并重新创建之后,它被称为h

windows更新后,我的jps、jconsole和jvisualvm不再工作

Jps给我进程ID,但它告诉我进程信息不可用

我无法像以前那样用jvisualvm连接到这些进程

我正在运行1.6.0_22 jre

我以前就有过这个问题,尝试过,它成功了。但这一次,运气不好,没有帮助

编辑: 我找到了一个解决方案:在我的临时文件夹中,我确实销毁了
hsperfdata\uu
文件夹。显然我的用户名有问题。该文件夹名为hsperfdata\u myname。在通过调用jps销毁并重新创建之后,它被称为hasperfdata_MYNAME


非常奇怪。

我们这里也有同样的问题

tmp文件夹技巧对我们也不起作用

到目前为止,我们已经找到了一些方法让事情恢复正常:

  • 系统还原
  • 重命名“C:\Documents and Settings\myusername\Local Settings”下的临时文件夹,并创建一个新的临时文件夹(对于windows,我不确定这样做是否安全…)
  • 开始手动从临时文件夹中删除内容
  • 可能是最安全的:运行ccleaner,这将清理临时文件夹

在我的临时文件夹中,我确实销毁了hsperfdata_uuu文件夹。显然我的用户名有问题。该文件夹名为hsperfdata\u myname。在通过调用jps销毁并重新创建之后,它被称为hasperfdata_MYNAME


非常奇怪。

在unix上,请确保您以启动它的用户的身份运行。

我编写了一个脚本来应用解决方法,我从一些监视脚本中调用它,直到修复为止

#!/bin/bash
# Name: fix_jps.bash
# Author: Cameron Pierce
#
# Purpose: create /tmp/hsperfdata directories that jps and jstat can work with

## VARIABLES
RETVAL=""
fileHSP=""
filePID=""
fileLOG=/tmp/fix_jps.log

# for every /tmp/hsperfdata_[name] directory that exists
for fileHSP in `ls -d /tmp/hsperfdata_*`; do
        #echo "entry ${fileHSP}" # DEBUG
        # if our search returns entries that are not directories, skip them
        if [ ! -d ${fileHSP} ]; then
                continue
        fi
        #ls ${fileHSP} # DEBUG

        # alternative to ls below
        #FINDFILES=(${fileHSP}/*)
        #if [ ${#FINDFILES[@]} -gt 0 ]; then
        #       echo "files in $fileHSP: ${#FINDFILES[@]} "
        #fi
    for filePID in `ls ${fileHSP}/ 2>> ${fileLOG} | grep "[[:digit:]]\{1,\}"`; do
            #echo "pid name: ${filePID}" # DEBUG
            # if the directory was empty, move on to the next fileENTRY
            if [ "${filePID}" == "" ]; then
                    #echo "the contents of the variable filePID appear to be empty \"${filePID}\"" # DEBUG
                    # remove the fileHSP if empty; this will clean up user hsperfdata dirs
                    rmdir ${fileHSP} 2>> ${fileLOG}
                    continue
            # if a symlink already exists, move on to the next fileENTRY
            elif [ -h /tmp/hsperfdata_${filePID} ]; then
                    #echo "symlink already exists for /tmp/hsperfdata_${filePID}" # DEBUG
                    continue
            fi
            #echo "name: ${filePID}"
            # if a process exists for filePID, create a symlink to the source file
            ps -eo pid | awk '{print $1}' | grep -q "^${filePID}$"
            RETVAL=$?
            # if a process exists with pid of filePID and a symlink doesn't exists, create symlink
            if [ $RETVAL -eq 0 -a ! -e /tmp/hsperfdata_${filePID} ]; then
                    ln -s ${fileHSP}/${filePID} /tmp/hsperfdata_$filePID
                    #echo ls -l /tmp/hs perfdata_${filePID} # DEBUG
            fi
    done
done

# remove broken symlinks
#find -L /tmp/hsperfdata_* -type l # DEBUG
find -L /tmp/hsperfdata_* -type l -delete

我终于找到了解决办法(见原始问题)谢谢,谢谢,谢谢,谢谢。。。我把头发拔得很漂亮!类似于:sudo-u用户名jpsNice one!我切换了用户,所有信息都可用。