jvm包括三種類加載器:
第一種:bootstrap classloader:加載java的核心類。
第二種:extension classloader:負責加載jre的擴展目錄中的jar包。
第三種:它負責在JVM被啟動時,加載來自在命令java中的-classpath或者java.class.path系統屬性或者 CLASSPATH操作系統屬性所指定的JAR類包和類路徑。
以上參考博客原文路徑為:http://blog.csdn.net/xrt95050/article/details/4413998
jvm 加載包名和類名相同的類時,先加載classpath中jar路徑放在前面的,包名類名都相同,那jvm沒法區分了,如果使用ide一般情況下是會提示發生沖突而報錯,若不報錯,只有第一個包被引入(在classpath路徑下排在前面的包),第二個包會在classloader加載類時判斷重復而忽略。
如果加載包名和類型相同的類可以使用不同的類加載器,也就是說使用自定義類加載器加載同包同名的類。
今天在使用slf4j和logback時,由於以前的log4j包也存在,導致配置有時候不成功,marker一下。
注:slf4j:simple logging facade 4 java:簡單日志外觀4java:意即使用外觀模式的日志實現類。實現可以使用log4j、logback等等實現了org.slf4j.impl包下的binder的日志類。使用slf4j,可以方便的在這些日志實現類中切換。