You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动JConsole时抛出空指针异常问题求助

JConsole启动触发NullPointerException的解决办法

问题详情

启动JConsole时弹出空指针异常对话框,关闭后点击「连接->新建连接」仍会报错。当前环境信息:

  • Java版本:Amazon Corretto 11.0.20_8
  • 路径验证结果:
    • where java 返回:C:\Program Files\Amazon Corretto\jdk11.0.20_8\bin\java.exe
    • where jconsole 返回:C:\Program Files\Amazon Corretto\jdk11.0.20_8\bin\jconsole.exe
  • 已尝试操作:手动创建了缺失的C:\Users\myname\AppData\Local\Temp\hsperfdata_myname文件夹,但问题未解决。

异常栈信息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager.activeVms(LocalVmManager.java:150)
    at jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:150)
    at jdk.jconsole/sun.tools.jconsole.LocalVirtualMachine.getMonitoredVMs(LocalVirtualMachine.java:132)
    at jdk.jconsole/sun.tools.jconsole.LocalVirtualMachine.getAllVirtualMachines(LocalVirtualMachine.java:122)
    at jdk.jconsole/sun.tools.jconsole.ConnectDialog$ManagedVmTableModel.refresh(ConnectDialog.java:697)
    at jdk.jconsole/sun.tools.jconsole.ConnectDialog$ManagedVmTableModel.<init>(ConnectDialog.java:687)
    at jdk.jconsole/sun.tools.jconsole.ConnectDialog.<init>(ConnectDialog.java:121)
    at jdk.jconsole/sun.tools.jconsole.JConsole.showConnectDialog(JConsole.java:616)
    at jdk.jconsole/sun.tools.jconsole.JConsole$6.run(JConsole.java:829)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

解决步骤

1. 修复hsperfdata目录权限

手动创建文件夹后,需确保当前用户对C:\Users\myname\AppData\Local\Temp\hsperfdata_myname拥有完全控制权限:

  • 右键文件夹 → 属性 → 安全 → 编辑 → 选中当前用户 → 勾选「完全控制」 → 应用并确认。

2. 以管理员身份启动JConsole

右键点击jconsole.exe,选择「以管理员身份运行」。系统权限限制可能导致JConsole无法读写perfdata目录。

3. 校验临时目录环境变量

检查TEMP和TMP环境变量是否指向正确路径:

  • 打开命令提示符,执行echo %TEMP%和echo %TMP%,确认输出为C:\Users\myname\AppData\Local\Temp。
  • 若路径错误,右键「此电脑」→ 属性 → 高级系统设置 → 环境变量,修改用户变量中的TEMP和TMP值。

4. 重建hsperfdata目录

  • 删除手动创建的hsperfdata_myname文件夹。
  • 打开命令提示符,执行mkdir "%TEMP%\hsperfdata_myname",用系统命令重新创建目录,避免手动创建的权限问题。
  • 重启JConsole。

5. 排查多Java环境干扰

确保系统无其他Java版本残留:

  • 执行java -version和jconsole -version,确认输出均为Amazon Corretto 11.0.20_8。
  • 若有其他版本,卸载后清理JAVA_HOME和Path环境变量,仅保留当前Corretto路径。

6. 手动指定进程ID连接

若上述方法无效,可跳过自动发现,直接手动连接目标JVM:

  • 打开命令提示符,执行jps -l获取当前运行的Java进程ID。
  • 启动JConsole,选择「远程进程」,输入localhost:<进程ID>后点击连接。

内容的提问来源于stack exchange,提问作者Donut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:03:26