39
40 public class JVMAddModuleExportToAllUnnamed {
41
42 // Check that a class in a package in module_one cannot access a class
43 // that is in the unnamed module if the accessing package is strict.
44 public static void main(String args[]) throws Throwable {
45 Object m1x;
46
47 // Get the java.lang.reflect.Module object for module java.base.
48 Class jlObject = Class.forName("java.lang.Object");
49 Object jlObject_jlrM = jlObject.getModule();
50 assertNotNull(jlObject_jlrM, "jlrModule object of java.lang.Object should not be null");
51
52 // Get the class loader for JVMAddModuleExportToAllUnnamed and assume it's also used to
53 // load class p1.c1.
54 ClassLoader this_cldr = JVMAddModuleExportToAllUnnamed.class.getClassLoader();
55
56 // Define a module for p1.
57 m1x = ModuleHelper.ModuleObject("module_one", this_cldr, new String[] { "p1" });
58 assertNotNull(m1x, "Module should not be null");
59 ModuleHelper.DefineModule(m1x, "9.0", "m1x/here", new String[] { "p1" });
60 ModuleHelper.AddReadsModule(m1x, jlObject_jlrM);
61
62 // Make package p1 in m1x visible to everyone.
63 ModuleHelper.AddModuleExportsToAll(m1x, "p1");
64
65 // p1.c1's ctor tries to call a method in p2.c2. This should not work
66 // because p2 is in the unnamed module and p1.c1 is strict.
67 try {
68 Class p1_c1_class = Class.forName("p1.c1");
69 p1_c1_class.newInstance();
70 } catch (IllegalAccessError e) {
71 System.out.println(e.getMessage());
72 if (!e.getMessage().contains("does not read unnamed module")) {
73 throw new RuntimeException("Wrong message: " + e.getMessage());
74 }
75 }
76 }
77 }
|
39
40 public class JVMAddModuleExportToAllUnnamed {
41
42 // Check that a class in a package in module_one cannot access a class
43 // that is in the unnamed module if the accessing package is strict.
44 public static void main(String args[]) throws Throwable {
45 Object m1x;
46
47 // Get the java.lang.reflect.Module object for module java.base.
48 Class jlObject = Class.forName("java.lang.Object");
49 Object jlObject_jlrM = jlObject.getModule();
50 assertNotNull(jlObject_jlrM, "jlrModule object of java.lang.Object should not be null");
51
52 // Get the class loader for JVMAddModuleExportToAllUnnamed and assume it's also used to
53 // load class p1.c1.
54 ClassLoader this_cldr = JVMAddModuleExportToAllUnnamed.class.getClassLoader();
55
56 // Define a module for p1.
57 m1x = ModuleHelper.ModuleObject("module_one", this_cldr, new String[] { "p1" });
58 assertNotNull(m1x, "Module should not be null");
59 ModuleHelper.DefineModule(m1x, false, "9.0", "m1x/here", new String[] { "p1" });
60 ModuleHelper.AddReadsModule(m1x, jlObject_jlrM);
61
62 // Make package p1 in m1x visible to everyone.
63 ModuleHelper.AddModuleExportsToAll(m1x, "p1");
64
65 // p1.c1's ctor tries to call a method in p2.c2. This should not work
66 // because p2 is in the unnamed module and p1.c1 is strict.
67 try {
68 Class p1_c1_class = Class.forName("p1.c1");
69 p1_c1_class.newInstance();
70 } catch (IllegalAccessError e) {
71 System.out.println(e.getMessage());
72 if (!e.getMessage().contains("does not read unnamed module")) {
73 throw new RuntimeException("Wrong message: " + e.getMessage());
74 }
75 }
76 }
77 }
|