JDK-6967935 : Fix for 6951661 broke VisualVM ability to find and connect to local VMs
  • Type: Bug
  • Component: tools
  • Sub-Component: visualvm
  • Affected Version: 7
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic,windows_xp
  • CPU: generic,x86
  • Submitted: 2010-07-09
  • Updated: 2012-02-02
  • Resolved: 2011-04-27
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Relates :  
Description
VisualVM in JDK7 starting from b97 does not display any local VMs. 

Short summary:

It seems that at least con.sun.tools.visualvm.jvmstat.JvmstatModeImpl needs to be recompiled, because it refers to an obsolete method signature.

Since b97 method sun.jvmstat.monitor.Monitor.getVariability() returns object of type sun.jvmstat.monitor.Variability instead of sun.management.counter.Variability.

Detailed analysis:

The following message appears in ~/.visualvm/6u14/var/log/messages.log:

SEVERE [org.openide.util.RequestProcessor]
java.lang.NoSuchMethodError: sun.jvmstat.monitor.Monitor.getVariability()Lsun/management/counter/Variability;
        at com.sun.tools.visualvm.jvmstat.JvmstatModelImpl.findByName(JvmstatModelImpl.java:99)
        at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:49)
        at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:42)
        at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:111)
        at com.sun.tools.visualvm.application.jvm.JvmFactory.getJVMFor(JvmFactory.java:65)
        at com.sun.tools.visualvm.application.ApplicationSupport.createCurrentApplication(ApplicationSupport.java:56)
        at com.sun.tools.visualvm.application.Application.<clinit>(Application.java:45)
        at com.sun.tools.visualvm.application.ApplicationSupport$1$1.run(ApplicationSupport.java:65)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
SEVERE [org.openide.util.RequestProcessor]
java.lang.NoClassDefFoundError: Could not initialize class com.sun.tools.visualvm.application.Application
        at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.processNewApplicationsByPids(JvmstatApplicationProvider.java:171)
        at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.processNewHost(JvmstatApplicationProvider.java:126)
        at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.access$000(JvmstatApplicationProvider.java:69)
        at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider$1.run(JvmstatApplicationProvider.java:96)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

b97 contains a fix for CR 6951661, which removed the following import from sun/jvmstat/monitor/Monitor.java:

-import sun.management.counter.Variability;

So now javac resolves Variability to the class in the same package.

Comments
SUGGESTED FIX Java VisualVM based on VisualVM 1.3.1 was integrated into JDK 6u23. This issue can be easily fixed by upgrading Java VisualVM in JDK 7 to the one available in JDK 6u23.
22-11-2010