You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2004/10/13 23:24:46 UTC

DO NOT REPLY [Bug 31710] New: - getClassLoader() returns null at a critical point under certain conditions

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=31710>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=31710

getClassLoader() returns null at a critical point under certain conditions

           Summary: getClassLoader() returns null at a critical point under
                    certain conditions
           Product: Commons
           Version: 1.0.4
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: Critical
          Priority: Other
         Component: Logging
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: david.ferrero@zion.com
                CC: david.ferrero@zion.com


launching jakarta-tomcat 5.0.28 using the JWS (java wrapper service) via the
Bootstrap class leads to a critical null pointer exception which points to code
in LogFactoryImpl.java which expects this.getClass().getClassLoader() to return
a value that's not null. The javadocs for Class state that null can be returned
in some implementations if the class was loaded by the bootstrap classloader.  I
have a patch file but am not sure how to submit it as an attachment so here it
is below:

Index: LogFactoryImpl.java
===================================================================
RCS file:
/home/cvspublic/jakarta-commons/logging/src/java/org/apache/commons/logging/impl/LogFactoryImpl.java,v
retrieving revision 1.33
diff -u -u -r1.33 LogFactoryImpl.java
--- LogFactoryImpl.java 6 Mar 2004 21:52:59 -0000       1.33
+++ LogFactoryImpl.java 13 Oct 2004 20:54:02 -0000
@@ -371,8 +371,12 @@
         Class logClass = null;
         Class logInterface = null;
         try {
-            logInterface = this.getClass().getClassLoader().loadClass
-                (LOG_INTERFACE);
+            ClassLoader cl = this.getClass().getClassLoader();
+            // handle the case if getClassLoader() returns null
+            // It may mean this class was loaded from the bootstrap classloader
+            logInterface = (cl == null) ? loadClass(LOG_INTERFACE) : 
+                                          cl.loadClass(LOG_INTERFACE);
+
             logClass = loadClass(logClassName);
             if (logClass == null) {
                 throw new LogConfigurationException

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org