--- old/src/java.logging/share/classes/java/util/logging/Level.java 2016-12-09 13:07:13.000000000 +0000 +++ new/src/java.logging/share/classes/java/util/logging/Level.java 2016-12-09 13:07:13.000000000 +0000 @@ -79,8 +79,13 @@ private static final String defaultBundle = "sun.util.logging.resources.logging"; - private static final JavaUtilResourceBundleAccess RB_ACCESS = - SharedSecrets.getJavaUtilResourceBundleAccess(); + // Calling SharedSecrets.getJavaUtilResourceBundleAccess() + // forces the initialization of ResourceBundle.class, which + // can be too early if the VM has not finished booting yet. + private static final class RbAccess { + static final JavaUtilResourceBundleAccess RB_ACCESS = + SharedSecrets.getJavaUtilResourceBundleAccess(); + } /** * @serial The non-localized name of the level. @@ -286,7 +291,7 @@ // or its defining class loader, if it's unnamed module, // of this Level instance that can be a custom Level subclass; Module module = this.getClass().getModule(); - ResourceBundle rb = RB_ACCESS.getBundle(resourceBundleName, + ResourceBundle rb = RbAccess.RB_ACCESS.getBundle(resourceBundleName, newLocale, module); final String localizedName = rb.getString(name); --- old/src/java.logging/share/classes/java/util/logging/Logger.java 2016-12-09 13:07:14.000000000 +0000 +++ new/src/java.logging/share/classes/java/util/logging/Logger.java 2016-12-09 13:07:14.000000000 +0000 @@ -259,8 +259,13 @@ private static final LoggerBundle NO_RESOURCE_BUNDLE = new LoggerBundle(null, null); - private static final JavaUtilResourceBundleAccess RB_ACCESS = + // Calling SharedSecrets.getJavaUtilResourceBundleAccess() + // forces the initialization of ResourceBundle.class, which + // can be too early if the VM has not finished booting yet. + private static final class RbAccess { + static final JavaUtilResourceBundleAccess RB_ACCESS = SharedSecrets.getJavaUtilResourceBundleAccess(); + } // A value class that holds the logger configuration data. // This configuration can be shared between an application logger @@ -2183,7 +2188,7 @@ if (!useCallersModule || callerModule == null || !callerModule.isNamed()) { try { Module mod = cl.getUnnamedModule(); - catalog = RB_ACCESS.getBundle(name, currentLocale, mod); + catalog = RbAccess.RB_ACCESS.getBundle(name, currentLocale, mod); catalogName = name; catalogLocale = currentLocale; return catalog; @@ -2227,7 +2232,7 @@ // Try with the caller's module try { // Use the caller's module - catalog = RB_ACCESS.getBundle(name, currentLocale, callerModule); + catalog = RbAccess.RB_ACCESS.getBundle(name, currentLocale, callerModule); catalogName = name; catalogLocale = currentLocale; return catalog;