jmx-dev 8060166: javax/management/MBeanInfo/NotificationInfoTest.java fails with modular image

Alan Bateman Alan.Bateman at oracle.com
Mon Oct 13 14:19:33 UTC 2014


This test gets a URL to MBeanServer.class in a way that is dependent on 
the JDK internal layout (assumes rt.jar). I'd like to change this test 
to just use ClassLoader.getSystemResource so that it works when we move 
to a modular image. The proposed attached are below.

-Alan

--- a/test/javax/management/MBeanInfo/NotificationInfoTest.java Fri Sep 
19 12:07:21 2014 +0100
+++ b/test/javax/management/MBeanInfo/NotificationInfoTest.java Fri Sep 
19 12:42:36 2014 +0100
@@ -36,7 +36,6 @@
  import java.lang.management.*;
  import java.lang.reflect.*;
  import java.net.*;
-import java.security.CodeSource;
  import java.util.*;
  import java.util.jar.*;
  import javax.management.*;
@@ -83,27 +82,10 @@
          System.out.println("Checking platform MBeans...");
          checkPlatformMBeans();

-        CodeSource cs =
- javax.management.MBeanServer.class.getProtectionDomain()
-            .getCodeSource();
-        URL codeBase;
-        if (cs == null) {
-            String javaHome = System.getProperty("java.home");
-            String[] candidates = {"/lib/rt.jar", "/classes/"};
-            codeBase = null;
-            for (String candidate : candidates) {
-                File file = new File(javaHome + candidate);
-                if (file.exists()) {
-                    codeBase = file.toURI().toURL();
-                    break;
-                }
-            }
-            if (codeBase == null) {
-                throw new Exception(
-                        "Could not determine codeBase for java.home=" + 
javaHome);
-            }
-        } else
-            codeBase = cs.getLocation();
+        URL codeBase = 
ClassLoader.getSystemResource("javax/management/MBeanServer.class");
+        if (codeBase == null) {
+            throw new Exception("Could not determine codeBase for " + 
MBeanServer.class);
+        }

          System.out.println();
          System.out.println("Looking for standard MBeans...");


More information about the jmx-dev mailing list