< prev index next >

src/java.base/share/classes/sun/launcher/LauncherHelper.java

Print this page

        

*** 83,92 **** --- 83,93 ---- import java.util.jar.Manifest; import java.util.stream.Collectors; import java.util.stream.Stream; import jdk.internal.misc.VM; + import jdk.internal.module.IllegalAccessLogger; import jdk.internal.module.Modules; public final class LauncherHelper {
*** 426,443 **** mainValue = mainAttrs.getValue(MAIN_CLASS); if (mainValue == null) { abort(null, "java.launcher.jar.error3", jarname); } ! // Add-Exports and Add-Opens to break encapsulation String exports = mainAttrs.getValue(ADD_EXPORTS); if (exports != null) { ! addExportsOrOpens(exports, false); } String opens = mainAttrs.getValue(ADD_OPENS); if (opens != null) { ! addExportsOrOpens(opens, true); } /* * Hand off to FXHelper if it detects a JavaFX application * This must be done after ensuring a Main-Class entry --- 427,450 ---- mainValue = mainAttrs.getValue(MAIN_CLASS); if (mainValue == null) { abort(null, "java.launcher.jar.error3", jarname); } ! // Add-Exports and Add-Opens to allow illegal access String exports = mainAttrs.getValue(ADD_EXPORTS); if (exports != null) { ! String warn = getLocalizedMessage("java.launcher.permitaccess.warning", ! jarname, ADD_EXPORTS); ! System.err.println(warn); ! addExportsOrOpens(exports, false, ADD_EXPORTS); } String opens = mainAttrs.getValue(ADD_OPENS); if (opens != null) { ! String warn = getLocalizedMessage("java.launcher.permitaccess.warning", ! jarname, ADD_OPENS); ! System.err.println(warn); ! addExportsOrOpens(opens, true, ADD_OPENS); } /* * Hand off to FXHelper if it detects a JavaFX application * This must be done after ensuring a Main-Class entry
*** 458,484 **** /** * Process the Add-Exports or Add-Opens value. The value is * {@code <module>/<package> ( <module>/<package>)*}. */ ! static void addExportsOrOpens(String value, boolean open) { for (String moduleAndPackage : value.split(" ")) { String[] s = moduleAndPackage.trim().split("/"); if (s.length == 2) { String mn = s[0]; String pn = s[1]; Layer.boot().findModule(mn).ifPresent(m -> { if (m.getDescriptor().packages().contains(pn)) { if (open) { Modules.addOpensToAllUnnamed(m, pn); } else { Modules.addExportsToAllUnnamed(m, pn); } } }); } } } // From src/share/bin/java.c: // enum LaunchMode { LM_UNKNOWN = 0, LM_CLASS, LM_JAR, LM_MODULE } --- 465,504 ---- /** * Process the Add-Exports or Add-Opens value. The value is * {@code <module>/<package> ( <module>/<package>)*}. */ ! static void addExportsOrOpens(String value, boolean open, String how) { ! IllegalAccessLogger.Builder builder; ! IllegalAccessLogger logger = IllegalAccessLogger.illegalAccessLogger(); ! if (logger == null) { ! builder = new IllegalAccessLogger.Builder(); ! } else { ! builder = logger.toBuilder(); ! } ! for (String moduleAndPackage : value.split(" ")) { String[] s = moduleAndPackage.trim().split("/"); if (s.length == 2) { String mn = s[0]; String pn = s[1]; + Layer.boot().findModule(mn).ifPresent(m -> { if (m.getDescriptor().packages().contains(pn)) { if (open) { + builder.logAccessToOpenPackage(m, pn, how); Modules.addOpensToAllUnnamed(m, pn); } else { + builder.logAccessToExportedPackage(m, pn, how); Modules.addExportsToAllUnnamed(m, pn); } } }); } } + + IllegalAccessLogger.setIllegalAccessLogger(builder.build()); } // From src/share/bin/java.c: // enum LaunchMode { LM_UNKNOWN = 0, LM_CLASS, LM_JAR, LM_MODULE }
< prev index next >