38
39 public class AccessCheckUnnamed {
40
41 // Test that a class in the unnamed module can not access a package in a
42 // named module that has not been unqualifiedly exported.
43 public static void main(String args[]) throws Throwable {
44 Object m1x, m2x;
45
46 // Get the java.lang.Module object for module java.base.
47 Class jlObject = Class.forName("java.lang.Object");
48 Object jlObject_jlM = jlObject.getModule();
49 assertNotNull(jlObject_jlM, "jlModule object of java.lang.Object should not be null");
50
51 // Get the class loader for AccessCheckWorks and assume it's also used to
52 // load class p2.c2.
53 ClassLoader this_cldr = AccessCheckUnnamed.class.getClassLoader();
54
55 // Define a module for p2.
56 m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" });
57 assertNotNull(m2x, "Module should not be null");
58 ModuleHelper.DefineModule(m2x, "9.0", "m2x/there", new String[] { "p2" });
59 ModuleHelper.AddReadsModule(m2x, jlObject_jlM);
60
61 // p1.c1's ctor tries to call a method in p2.c2. This should fail because
62 // p1 is in the unnamed module and p2.c2 is not unqualifiedly exported.
63 Class p1_c1_class = Class.forName("p1.c1");
64 try {
65 Object c1_obj = p1_c1_class.newInstance();
66 throw new RuntimeException("Failed to get IAE (p2 in m2x is not exported to unnamed module)");
67 } catch (IllegalAccessError f) {
68 System.out.println(f.getMessage());
69 if (!f.getMessage().contains("does not export p2 to unnamed module")) {
70 throw new RuntimeException("Wrong message: " + f.getMessage());
71 }
72 }
73 }
74 }
75
|
38
39 public class AccessCheckUnnamed {
40
41 // Test that a class in the unnamed module can not access a package in a
42 // named module that has not been unqualifiedly exported.
43 public static void main(String args[]) throws Throwable {
44 Object m1x, m2x;
45
46 // Get the java.lang.Module object for module java.base.
47 Class jlObject = Class.forName("java.lang.Object");
48 Object jlObject_jlM = jlObject.getModule();
49 assertNotNull(jlObject_jlM, "jlModule object of java.lang.Object should not be null");
50
51 // Get the class loader for AccessCheckWorks and assume it's also used to
52 // load class p2.c2.
53 ClassLoader this_cldr = AccessCheckUnnamed.class.getClassLoader();
54
55 // Define a module for p2.
56 m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" });
57 assertNotNull(m2x, "Module should not be null");
58 ModuleHelper.DefineModule(m2x, false, "9.0", "m2x/there", new String[] { "p2" });
59 ModuleHelper.AddReadsModule(m2x, jlObject_jlM);
60
61 // p1.c1's ctor tries to call a method in p2.c2. This should fail because
62 // p1 is in the unnamed module and p2.c2 is not unqualifiedly exported.
63 Class p1_c1_class = Class.forName("p1.c1");
64 try {
65 Object c1_obj = p1_c1_class.newInstance();
66 throw new RuntimeException("Failed to get IAE (p2 in m2x is not exported to unnamed module)");
67 } catch (IllegalAccessError f) {
68 System.out.println(f.getMessage());
69 if (!f.getMessage().contains("does not export p2 to unnamed module")) {
70 throw new RuntimeException("Wrong message: " + f.getMessage());
71 }
72 }
73 }
74 }
75
|