回答
在Android(Dalvik)系統類加載器中是PathClassLoader。
你將不得不看看它的源代碼來找出算法。這可能是遍歷可用Jar文件和目錄的某種形式的樹遍歷。
你在Java類加載器的層次結構,例如:
Bootstrap CL
|
|
Extension CL
|
|
SystemClassLoader CL
|
|
Application Specific CL
當調用一個CL的的findClass()方法一個ClassLoader通常委託給它的父首先將嘗試加載類。
E.g.如果你想加載類,這是在EXT-文件夾JVM的你可以使用
Class clazz=ClassLoader.getSystemClassLoader().findClass("org.pack.ExtClass");
首先會委託給它的父,擴展類加載器,這將委託給它的父, Bootstrap CL。 Bootstrap CL將返回null給擴展類加載器,因爲它找不到該類,那麼擴展CL將自己尋找類。由於它會在類路徑中找到類「org.pack.ExtClass」,它將加載,準備並將類返回給SystemClassLoader,SystemClassLoader會將參考clazz
設置爲返回的類對象。
因此,作爲一般規則,ClassLoader將總是首先委託給它的父代,並嘗試自行尋找它的類。
但是這個規則有例外,最突出的是Tomcat等人的WebApp Classloaders。 WebAppClassLoader的行爲有點不同。我認爲Tomcat Directory中有一個bootstrap.jar,它將首先加載類,如果找不到所請求的類,則只會委託給它的父類。
幾個環節:
http://www.developer.com/java/other/article.php/2248831/Java-Class-Loading-The-Basics.htm
http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html
http://www.ibm.com/developerworks/java/library/j-dyn0429/
希望幫助..
- 1. 良好的資源加載系統
- 2. 類加載器如何找到資源?
- 3. 尋找資源管理/分配系統
- 4. 的Java類加載器沒有找到預期的資源
- 5. JNLP不下載操作系統資源
- 6. 更改Weblogic的系統類加載器
- 7. 系統類加載器的名稱
- 8. 無法加載資源工廠類java.lang.ClassNotFoundException:com.jolbox.bonecp.BoneCPDataSource
- 9. 使用類加載器或文件找到資源?
- 10. 系統資源監視器/圖表
- 11. 源代碼管理系統的算法?
- 12. 從html5文件系統API加載資源
- 13. 無法加載資源:服務器與404未找到
- 14. 找到無資源插槽的算法
- 15. Chrome無法加載資源
- 16. Froogaloop無法加載資源
- 17. Laravel「無法加載資源」
- 18. 無法加載資源?
- 19. PHP:無法加載資源
- 20. WebappClassLoader無法加載資源
- 21. Laravel無法加載資源
- 22. PowerApps: - 無法加載資源
- 23. 工作流系統資源
- 24. System.Data.OleDb.OleDbException:超出系統資源
- 25. WiX:MSI通過系統面板卸載查找安裝源
- 26. 在Android源代碼中,系統查找並下載OTA更新?
- 27. 靜態資源的JSF加載資源
- 28. 檢查沒有加載的資源
- 29. 替換系統類加載器用於包含Jars的Jars類
- 30. Webview資源偵聽器不捕獲加載的資源