問題:
在使用java-1.8.0-openjdk環境查看JVM使用狀況的時候,遇到了以下報錯:java
Heap Usage: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.tools.jmap.JMap.runTool(JMap.java:201) at sun.tools.jmap.JMap.main(JMap.java:130) Caused by: java.lang.RuntimeException: unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:157) at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260) at sun.jvm.hotspot.tools.Tool.start(Tool.java:223) at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118) at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:50) ... 6 more
解決:
通過多方查詢找到了緣由:這裏-heap參數會調用用到了sun.jvm下的debug包,而默認openJDK的安裝中不包含!centos
解決方法:jvm
下載並安裝一個java-openjdk-debug插件!並且須要和openjdk小版本也一致!!!url
下載地址:http://debuginfo.centos.org/7/x86_64/spa
查看系統自身的openjdk版本:.net
這裏我由於找不到和小版本一致的安裝包,所以首先就將其卸載了(蛇皮操做)!!插件
yum -y erase java-1.8.0-openjdk-devel-1.8.0.201.b09-2.el7_6.x86_64
yum -y erase java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
而後選擇可以找到findbug的版本安裝:debug
yum -y install java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
yum -y install java-1.8.0-openjdk-devel-1.8.0.191.b12-1.el7_6.x86_64
下載並安裝對應版本的findbugs插件:code
wget http://debuginfo.centos.org/7/x86_64/java-1.8.0-openjdk-debuginfo-1.8.0.191.b12-1.el7_6.x86_64.rpm
rpm -ivh java-1.8.0-openjdk-debuginfo-1.8.0.191.b12-1.el7_6.x86_64.rpm
安裝完成後成功解決報錯問題!!!blog