Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7074616

java.lang.management.ManagementFactory.getPlatformManagementInterfaces fails

XMLWordPrintable

    • b06
    • x86
    • windows_7
    • Verified

        FULL PRODUCT VERSION :
        java version "1.7.0"
        Java(TM) SE Runtime Environment (build 1.7.0-b147)
        Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)


        ADDITIONAL OS VERSION INFORMATION :
        Linux, windows 7 64 bit, verified bug in openjdk source code

        A DESCRIPTION OF THE PROBLEM :
        getPlatformManagementInterfaces throws an exception when it attempts to populate a TreeSet of Class objects.

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        The below class will always throw an exception:

        public class Fail
        {
            public static void main(String[] args)
            {
                for (Class<?> c : java.lang.management.ManagementFactory.getPlatformManagementInterfaces())
                {
                    System.out.println(c);
                }
            }
        }


        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        The method should successfully return the collection of interfaces it says it will return instead of always failing.
        ACTUAL -
        $ javac -cp . Fail.java && java -cp . Fail
        Exception in thread "main" java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Comparable
                at java.util.TreeMap.compare(TreeMap.java:1188)
                at java.util.TreeMap.put(TreeMap.java:531)
                at java.util.TreeSet.add(TreeSet.java:255)
                at java.lang.management.ManagementFactory.getPlatformManagementInterfaces(ManagementFactory.java:792)
                at Fail.main(Fail.java:5)


        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        public class Fail
        {
            public static void main(String[] args)
            {
                for (Class<?> c : java.lang.management.ManagementFactory.getPlatformManagementInterfaces())
                {
                    System.out.println(c);
                }
            }
        }

        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        The data being accessed cannot be retrieved from outside the java.lang.management package. The fix should be trivial (either use a HashSet instead of a TreeSet, or if sorting is really deemed desirable, provide a comparator for the treeset to use.)

              fparain Frederic Parain
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: