<div dir="ltr">question 1: Can somebody tell me  when loggerFactoryClassLoader will be null? <div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:menlo;font-size:9pt"><span style="color:rgb(204,120,50)">static </span>Set<URL> <span style="color:rgb(255,198,109)">findPossibleStaticLoggerBinderPathSet</span>() {<br>    <span style="color:rgb(128,128,128)">// use Set instead of list in order to deal with bug #138<br></span><span style="color:rgb(128,128,128)">    // LinkedHashSet appropriate here because it preserves insertion order<br></span><span style="color:rgb(128,128,128)">    // during iteration<br></span><span style="color:rgb(128,128,128)">    </span>Set<URL> staticLoggerBinderPathSet = <span style="color:rgb(204,120,50)">new </span>LinkedHashSet<URL>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    try </span>{<br>        ClassLoader loggerFactoryClassLoader = LoggerFactory.<span style="color:rgb(204,120,50)">class</span>.getClassLoader()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>Enumeration<URL> paths<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        if </span>(loggerFactoryClassLoader == <span style="color:rgb(204,120,50)">null</span>) {<br>            paths = ClassLoader.<span style="font-style:italic">getSystemResources</span>(<span style="color:rgb(152,118,170);font-style:italic">STATIC_LOGGER_BINDER_PATH</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>} <span style="color:rgb(204,120,50)">else </span>{<br>            paths = loggerFactoryClassLoader.getResources(<span style="color:rgb(152,118,170);font-style:italic">STATIC_LOGGER_BINDER_PATH</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>}<br>        <span style="color:rgb(204,120,50)">while </span>(paths.hasMoreElements()) {<br>            URL path = paths.nextElement()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>staticLoggerBinderPathSet.add(path)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>}<br>    } <span style="color:rgb(204,120,50)">catch </span>(IOException ioe) {<br>        Util.<span style="font-style:italic">report</span>(<span style="color:rgb(106,135,89)">"Error getting resources from path"</span><span style="color:rgb(204,120,50)">, </span>ioe)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    <span style="color:rgb(204,120,50)">return </span>staticLoggerBinderPathSet<span style="color:rgb(204,120,50)">;<br></span>}</pre><div>question 2: ClassLoader.getSystemResources(STATIC_LOGGER_BINDER_PATH) and loggerFactoryClassLoader.getResources(STATIC_LOGGER_BINDER_PATH) are the same meaning in jdk.</div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:menlo;font-size:9pt"><span style="color:rgb(204,120,50)">public static </span>Enumeration<URL> <span style="background-color:rgb(52,65,52)">getSystemResources</span>(String name)<br>    <span style="color:rgb(204,120,50)">throws </span>IOException<br>{<br>    ClassLoader system = <span style="font-style:italic">getSystemClassLoader</span>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    if </span>(system == <span style="color:rgb(204,120,50)">null</span>) {<br>        <span style="color:rgb(204,120,50)">return </span><span style="font-style:italic">getBootstrapResources</span>(name)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    <span style="color:rgb(204,120,50)">return </span>system.getResources(name)<span style="color:rgb(204,120,50)">;<br></span>}<br></pre></div><div><br><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:menlo;font-size:9pt"><span style="color:rgb(204,120,50)">public </span>Enumeration<URL> <span style="background-color:rgb(52,65,52)">getResources</span>(String name) <span style="color:rgb(204,120,50)">throws </span>IOException {<br>    Enumeration[] tmp = <span style="color:rgb(204,120,50)">new </span>Enumeration[<span style="color:rgb(104,151,187)">2</span>]<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    if </span>(<span style="color:rgb(152,118,170)">parent </span>!= <span style="color:rgb(204,120,50)">null</span>) {<br>        tmp[<span style="color:rgb(104,151,187)">0</span>] = <span style="color:rgb(152,118,170)">parent</span>.<span style="background-color:rgb(52,65,52)">getResources</span>(name)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>} <span style="color:rgb(204,120,50)">else </span>{<br>        tmp[<span style="color:rgb(104,151,187)">0</span>] = <span style="font-style:italic">getBootstrapResources</span>(name)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    tmp[<span style="color:rgb(104,151,187)">1</span>] = findResources(name)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    return new </span>CompoundEnumeration<>(tmp)<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div>thank for help.</div></div></div><div><br></div></div>