< prev index next >

test/hotspot/jtreg/runtime/LoaderConstraints/differentLE/Test.java

Print this page

        

@@ -73,15 +73,17 @@
     // it tries to load interface A. As it does not find it (there is no A.impl2),
     // it asks the super classloader for A.
     // Then it loads the D2 variant of D from the current working directory and it's
     // superclass C. This fails as D1 is already loaded with the same superclass.
 
-    static String expectedErrorMessage =
-        "loader constraint violation: loader \"<unnamed>\" (instance of PreemptingClassLoader, " +
-        "child of \"app\" jdk.internal.loader.ClassLoaders$AppClassLoader) wants to load " +
+    // Break the expectedErrorMessage into 2 pieces since the loader name will include
+    // its identity hash and can not be compared against.
+    static String expectedErrorMessage_part1 = "loader constraint violation: loader PreemptingClassLoader @";
+    static String expectedErrorMessage_part2 = " (instance of PreemptingClassLoader, " +
+        "child of 'app' jdk.internal.loader.ClassLoaders$AppClassLoader) wants to load " +
         "class test.D_ambgs. A different class with the same name was previously loaded " +
-        "by \"app\" (instance of jdk.internal.loader.ClassLoaders$AppClassLoader).";
+        "by 'app' (instance of jdk.internal.loader.ClassLoaders$AppClassLoader).";
 
     public static void test_access() throws Exception {
         try {
             // Make a Class 'D_ambgs' under the default loader.
             // This uses the implementation from the .java file.

@@ -99,12 +101,13 @@
             D_ambgs[] x2 = c_1.make(iface);
 
             throw new RuntimeException("Expected LinkageError was not thrown.");
         } catch (LinkageError jle) {
             String errorMsg = jle.getMessage();
-            if (!errorMsg.equals(expectedErrorMessage)) {
-                System.out.println("Expected: " + expectedErrorMessage + "\n" +
+            if (!errorMsg.contains(expectedErrorMessage_part1) || 
+                !errorMsg.contains(expectedErrorMessage_part2)) {
+                System.out.println("Expected: " + expectedErrorMessage_part1 + "<id>" + expectedErrorMessage_part2 + "\n" +
                                    "but got:  " + errorMsg);
                 throw new RuntimeException("Wrong error message of LinkageError.");
             } else {
                 System.out.println("Passed with message: " + errorMsg);
             }
< prev index next >