I have a logging properties file which contains these two lines:
handlers=java.util.logging.ConsoleHandler my.Handler
java.util.logging.ConsoleHandler.formatter=my.Formatter
System classloader initialization fails with the appended exception output. In
both cases here, it appears that the system is unable to initialize the
classloader because it cannot find classes which will not be available until
after the classloader initializes. I'd guess the right fix is to delay
initializing the logger until later in the classloader initialization process,
but I haven't dived very deeply into the code to be sure.
WARNING: java.util.logging.ConsoleHandler.formatter = my.Formatter
java.lang.ClassNotFoundException: my/Formatter
at java.lang.VMClass.forName(Native Method)
at java.lang.Class.forName(Class.java:235)
at java.util.logging.LogManager.locateClass(LogManager.java:916)
at java.util.logging.LogManager.getClassProperty(LogManager.java:743)
at java.util.logging.LogManager.getInstanceProperty(LogManager.java:756)
at java.util.logging.StreamHandler.<init>(StreamHandler.java:138)
at java.util.logging.ConsoleHandler.<init>(ConsoleHandler.java:83)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at java.lang.Class.newInstance(Class.java:1163)
at java.util.logging.LogManager.createInstance(LogManager.java:847)
at java.util.logging.LogManager.readConfiguration(LogManager.java:571)
at java.util.logging.LogManager.readConfiguration(LogManager.java:532)
at java.util.logging.LogManager.initLogManager(LogManager.java:203)
at java.util.logging.LogManager.getLogManager(LogManager.java:168)
at java.util.logging.Logger.getLogger(Logger.java:276)
at java.util.logging.Logger.getLogger(Logger.java:224)
at java.util.logging.Logger$1.run(Logger.java:91)
at java.security.AccessController.doPrivileged(AccessController.java:96)
at java.util.logging.Logger.<clinit>(Logger.java:86)
at gnu.java.util.jar.JarUtils.<clinit>(JarUtils.java:65)
at java.util.jar.Manifest.read(Manifest.java:162)
at java.util.jar.Manifest.<init>(Manifest.java:89)
at java.util.jar.JarFile.readManifest(JarFile.java:295)
at java.util.jar.JarFile.<init>(JarFile.java:260)
at gnu.java.net.protocol.jar.Connection$JarFileCache.get(Connection.java:98)
at gnu.java.net.protocol.jar.Connection.connect(Connection.java:140)
at gnu.java.net.protocol.jar.Connection.getJarFile(Connection.java:169)
at gnu.java.net.loader.JarURLLoader.initialize(JarURLLoader.java:84)
at gnu.java.net.loader.JarURLLoader.<init>(JarURLLoader.java:76)
at java.net.URLClassLoader.addURLImpl(URLClassLoader.java:387)
at java.net.URLClassLoader.addURLs(URLClassLoader.java:418)
at java.net.URLClassLoader.<init>(URLClassLoader.java:215)
at java.lang.ClassLoader$1.<init>(ClassLoader.java:1099)
at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:1098)
at java.lang.ClassLoader.defaultGetSystemClassLoader(ClassLoader.java:1083)
at java.lang.VMClassLoader.getSystemClassLoader(VMClassLoader.java:327)
at java.lang.ClassLoader$StaticData.<clinit>(ClassLoader.java:154)
at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:799)
WARNING: error instantiating 'my.Handler' referenced by handlers, class not
found
java.lang.ClassNotFoundException: my/Handler
at java.lang.VMClass.forName(Native Method)
at java.lang.Class.forName(Class.java:235)
at java.util.logging.LogManager.locateClass(LogManager.java:916)
at java.util.logging.LogManager.createInstance(LogManager.java:845)
at java.util.logging.LogManager.readConfiguration(LogManager.java:571)
at java.util.logging.LogManager.readConfiguration(LogManager.java:532)
at java.util.logging.LogManager.initLogManager(LogManager.java:203)
at java.util.logging.LogManager.getLogManager(LogManager.java:168)
at java.util.logging.Logger.getLogger(Logger.java:276)
at java.util.logging.Logger.getLogger(Logger.java:224)
at java.util.logging.Logger$1.run(Logger.java:91)
at java.security.AccessController.doPrivileged(AccessController.java:96)
at java.util.logging.Logger.<clinit>(Logger.java:86)
at gnu.java.util.jar.JarUtils.<clinit>(JarUtils.java:65)
at java.util.jar.Manifest.read(Manifest.java:162)
at java.util.jar.Manifest.<init>(Manifest.java:89)
at java.util.jar.JarFile.readManifest(JarFile.java:295)
at java.util.jar.JarFile.<init>(JarFile.java:260)
at gnu.java.net.protocol.jar.Connection$JarFileCache.get(Connection.java:98)
at gnu.java.net.protocol.jar.Connection.connect(Connection.java:140)
at gnu.java.net.protocol.jar.Connection.getJarFile(Connection.java:169)
at gnu.java.net.loader.JarURLLoader.initialize(JarURLLoader.java:84)
at gnu.java.net.loader.JarURLLoader.<init>(JarURLLoader.java:76)
at java.net.URLClassLoader.addURLImpl(URLClassLoader.java:387)
at java.net.URLClassLoader.addURLs(URLClassLoader.java:418)
at java.net.URLClassLoader.<init>(URLClassLoader.java:215)
at java.lang.ClassLoader$1.<init>(ClassLoader.java:1099)
at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:1098)
at java.lang.ClassLoader.defaultGetSystemClassLoader(ClassLoader.java:1083)
at java.lang.VMClassLoader.getSystemClassLoader(VMClassLoader.java:327)
at java.lang.ClassLoader$StaticData.<clinit>(ClassLoader.java:154)
at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:799)
Cannot create system class loader
java.lang.ExceptionInInitializerError
at gnu.java.util.jar.JarUtils.<clinit>(JarUtils.java:65)
at java.util.jar.Manifest.read(Manifest.java:162)
at java.util.jar.Manifest.<init>(Manifest.java:89)
at java.util.jar.JarFile.readManifest(JarFile.java:295)
at java.util.jar.JarFile.<init>(JarFile.java:260)
at gnu.java.net.protocol.jar.Connection$JarFileCache.get(Connection.java:98)
at gnu.java.net.protocol.jar.Connection.connect(Connection.java:140)
at gnu.java.net.protocol.jar.Connection.getJarFile(Connection.java:169)
at gnu.java.net.loader.JarURLLoader.initialize(JarURLLoader.java:84)
at gnu.java.net.loader.JarURLLoader.<init>(JarURLLoader.java:76)
at java.net.URLClassLoader.addURLImpl(URLClassLoader.java:387)
at java.net.URLClassLoader.addURLs(URLClassLoader.java:418)
at java.net.URLClassLoader.<init>(URLClassLoader.java:215)
at java.lang.ClassLoader$1.<init>(ClassLoader.java:1099)
at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:1098)
at java.lang.ClassLoader.defaultGetSystemClassLoader(ClassLoader.java:1083)
at java.lang.VMClassLoader.getSystemClassLoader(VMClassLoader.java:327)
at java.lang.ClassLoader$StaticData.<clinit>(ClassLoader.java:154)
at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:799)
Caused by: java.lang.NullPointerException
at java.util.logging.Logger.addHandler(Logger.java:1017)
at java.util.logging.LogManager.readConfiguration(LogManager.java:573)
at java.util.logging.LogManager.readConfiguration(LogManager.java:532)
at java.util.logging.LogManager.initLogManager(LogManager.java:203)
at java.util.logging.LogManager.getLogManager(LogManager.java:168)
at java.util.logging.Logger.getLogger(Logger.java:276)
at java.util.logging.Logger.getLogger(Logger.java:224)
at java.util.logging.Logger$1.run(Logger.java:91)
at java.security.AccessController.doPrivileged(AccessController.java:96)
at java.util.logging.Logger.<clinit>(Logger.java:86)
at gnu.java.util.jar.JarUtils.<clinit>(JarUtils.java:65)
...18 more
--
Summary: circular dependency between LogManager and system
classloader initialization
Product: classpath
Version: 0.92
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: classpath
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: marc at mit dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29608
_______________________________________________
Bug-classpath mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-classpath