解决 jps/jconsole NullPointerException 的问题

本文解决了一个关于JConsole和JPS在Windows环境下出现的NPE空指针异常问题,通过调整用户环境变量中临时文件夹的路径至有权限的文件夹,成功恢复了两个工具的正常功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前阵子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

<think>我们正在解决一个明确的问题:如何在HDFS中创建嵌套目录`/jps/wc/data`。根据用户之前的上下文,用户已经创建过目录,但可能没有使用递归创建,因此需要强调递归创建的重要性。参考引用[3]中提到了HDFS的Shell命令操作,特别是目录操作。其中,`hdfsdfs-mkdir`命令可以用来创建目录,而`-p`选项可以递归创建父目录。因此,具体命令为:```bashhdfsdfs-mkdir-p/jps/wc/data```解释:-`-p`选项:如果父目录不存在,则先创建父目录。这样即使`/jps`和`/jps/wc`都不存在,也会被一起创建。验证命令:```bashhdfsdfs-ls-R/jps```输出应该显示`/jps/wc/data`目录。另外,参考引用[3]也提到了HDFS命令的格式:`hdfsdfs`是用于HDFS文件系统的命令。注意:在HDFS中创建目录时,需要确保当前用户有足够的权限。如果权限不足,可能需要使用超级用户或通过权限设置命令(如`hdfsdfs-chmod`)来设置权限。根据引用[1]和[3],HDFS的目录操作与Linux类似,但需要注意HDFS是一个分布式文件系统,其路径是绝对路径,且以`/`开头。因此,我们给出以下步骤:1.使用递归创建命令创建嵌套目录:```bashhdfsdfs-mkdir-p/jps/wc/data```2.验证目录是否创建成功:```bashhdfsdfs-ls-R/jps```3.如果遇到权限问题,可以修改目录权限(假设当前用户有权限修改):```bashhdfsdfs-chmod-R755/jps#递归修改权限```4.或者修改目录的所有者(如果当前用户不是目录的所有者):```bashhdfsdfs-chown-Ryour_username:your_group/jps```注意:修改权限和所有者的命令需要根据实际情况使用,如果当前用户是HDFS的管理员或者有相应权限才能执行。最后,根据要求生成相关问题。相关问题:1.如何删除HDFS中的嵌套目录及其所有文件?2.如何设置HDFS目录的访问权限以防止其他用户修改?3.HDFS的`-mkdir`命令与Linux的`mkdir`命令有何异同?4.在HDFS中创建目录时,如何指定目录的副本因子?注意:在回答中,我们引用了引用[3]的内容,因此在末尾添加引用标识[^3]。</think>### 在 HDFS 中创建嵌套目录 `/jps/wc/data` 的完整指南 要创建嵌套目录结构 `/jps/wc/data`,请使用 HDFS 的 `-mkdir -p` 命令的递归创建功能: #### 1. 执行递归创建命令 ```bash hdfs dfs -mkdir -p /jps/wc/data ``` - **`-p` 参数的作用**:自动创建路径中所有不存在的父目录(如 `/jps` 和 `/jps/wc`) - **适用场景**:当路径包含多级不存在的目录时(参考引用[3]中 HDFS 目录操作说明)[^3] #### 2. 验证目录结构 ```bash hdfs dfs -ls -R /jps ``` **预期输出**: ``` drwxr-xr-x - user supergroup 0 2023-08-01 14:30 /jps/wc drwxr-xr-x - user supergroup 0 2023-08-01 14:30 /jps/wc/data ``` #### 3. 权限管理(可选) 如果遇到权限问题: ```bash # 修改目录所有者 hdfs dfs -chown -R your_username:supergroup /jps # 修改目录权限 hdfs dfs -chmod -R 755 /jps ``` #### ⚠️ 注意事项 1. **路径格式**:必须使用以 `/` 开头的绝对路径(如 `/jps/wc/data`) 2. **大小写敏感**:HDFS 区分大小写,`/JPS` 和 `/jps` 被视为不同目录 3. **权限要求**:用户需对父目录 `/jps` 有写权限(参考引用[3]中权限说明)[^3] #### 错误排查 若创建失败: ```bash # 检查父目录是否存在 hdfs dfs -ls /jps # 检查用户权限 hdfs dfs -ls -d /jps ``` > **关键提示**:`-p` 参数是创建嵌套目录的核心解决方案,它能避免常见的 `No such file or directory` 错误(如引用[3]中提到的路径问题)[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值