您的位置:首页 > 编程语言 > Java开发

如何获得JDK1.6上的jconsole启动时的正在运行的JAVA进程的一些信息

2012-06-28 15:41 477 查看
注:在1.6JDK下测试通过,其他版本未测试。

在做项目时,要获得其他运行的JAVA进程的主类名称

例如jconsole这样



那它的这些信息是如何获得的呢?

如果已配置环境变量,则可直接用jps命令获得。或直接调用Jps.main(new String[]{-l});

但是这样是直接输出了,那该怎么获得呢。

参考以下代码

import java.util.Iterator;
import java.util.Set;

import sun.jvmstat.monitor.HostIdentifier;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;
import sun.tools.jps.Arguments;
import sun.tools.jps.Jps;

public class JSPTest {

/**
* @param args
*/
public static void main(String[] args) throws Exception {
Arguments arguments = new Arguments(new String[] {"-l"});
HostIdentifier hostidentifier = arguments.hostId();
MonitoredHost monitoredhost = MonitoredHost.getMonitoredHost(hostidentifier);
Set set = monitoredhost.activeVms();
Iterator iterator = set.iterator();
String s = null;
while (iterator.hasNext()) {
int i = ((Integer) iterator.next()).intValue();
s = (new StringBuilder()).append("//").append(i).append("?mode=r").toString();
VmIdentifier vmidentifier = new VmIdentifier(s);
MonitoredVm monitoredvm = monitoredhost.getMonitoredVm(vmidentifier, 0);
String s1 = MonitoredVmUtil.mainClass(monitoredvm, true);
System.out.println(s1);
}
}

}


这样就可以了。

代码中用到了tools.jar这个jar包,可以在JAVA_HOME的lib目录下找到他
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐