解决 jps/jconsole NullPointerException 的问题

2018年9月30日 35点热度 0条评论 来源: Lewis_刘

前阵子windows设置环境变量的时候卡死了,强制结束系统进程,结果导致用户环境变量全丢了,当时也没在意,后来使用jconsole的时候,问题来了,打开就报NPE空指针异常,无法调出选择连接的那个面板。网上搜了一下,发现有人使用JPS的时候,也报一样的错:

Exception in thread “main” java.lang.NullPointerException
at sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager.activeVms(LocalVmManager.java:148)
at sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:150)
at sun.tools.jps.Jps.main(Jps.java:62)
再搜了一下,有人给Java提交过一个bug,显示已经解决了

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager.activeVms(LocalVmManager.java:127)
at sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:133)
at sun.tools.jconsole.ConnectDialog M a n a g e d V m T a b l e M o d e l . g e t M a n a g e d V i r t u a l M a c h i n e s ( C o n n e c t D i a l o g . j a v a : 528 ) a t s u n . t o o l s . j c o n s o l e . C o n n e c t D i a l o g ManagedVmTableModel.getManagedVirtualMachines(ConnectDialog.java:528) at sun.tools.jconsole.ConnectDialog ManagedVmTableModel.getManagedVirtualMachines(ConnectDialog.java:528)atsun.tools.jconsole.ConnectDialogManagedVmTableModel.refresh(ConnectDialog.java:511)
at sun.tools.jconsole.ConnectDialog$ManagedVmTableModel.(ConnectDialog.java:502)
at sun.tools.jconsole.ConnectDialog.(ConnectDialog.java:139)
at sun.tools.jconsole.JConsole.showConnectDialog(JConsole.java:571)
at sun.tools.jconsole.JConsole.access$100(JConsole.java:34)
at sun.tools.jconsole.JConsole$4.run(JConsole.java:702)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
这个bug详情很有用,看了这个大概知道是由于临时文件夹的问题引起的,echo %TMP%,发现是有路径的,start %TMP%,提示没权限。于是用管理员身份运行jconsole,一切正常了。然后修改用户环境变量,指向有权限的文件夹:C:\Users\xxx\AppData\Local\Temp,然后jconsole和jps终于可以正常使用了。

看来这个bug在后来的某个版本又被谁改回去了,应该再去Oracle把这个bug reopen一下。

无意冒犯,转载自https://wujc.cn/archives/150

    原文作者:Lewis_刘
    原文地址: https://blog.csdn.net/l475128303/article/details/82910942
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。