在運行時從資料夾或JAR 發現類別
設想一個Java 工具,它可以深入研究Java 應用程式的結構,提取有意義的見解。為此,該工具必須掃描指定來源(JAR/WAR 或資料夾)中的 .class 檔案。然後它使用反射來檢查類別方法及其屬性。然而,這項任務已被證明難以實現。
存在許多基於 URLClassloader 的解決方案,允許從目錄或檔案載入特定類別。然而,似乎沒有人能夠在不事先了解類別名稱或套件結構的情況下識別和載入類別。
解決問題的癥結
經過仔細檢查,挑戰不在於透過遞歸掃描技術取得所有類別文件,而是為每個發現的類別檔案取得Class對象
利用JarFile 和URLClassLoader的強大功能
提供的程式碼有效地利用 Java NIO 從 JAR 檔案載入所有類別,而無需事先了解它們的存在。過程涉及:
考慮替代方案:Javassist
根據評論者的建議,Javassist 提供了另一個可行的選擇。透過在循環之前初始化 ClassPool,您可以建立 CtClass 物件來取代使用類別載入器載入類別。 CtClass 物件提供一系列類別屬性的訪問,包括方法、欄位、嵌套類別等。
這個全面的解決方案使開發人員能夠在運行時動態載入和檢查類,為複雜的程式碼分析和操作工具。
以上是如何在運行時從 JAR 或資料夾動態發現和檢查 Java 類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!