< prev index next >

test/runtime/modules/JVMAddModuleExportToAllUnnamed.java

Print this page




  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 }
< prev index next >