我有一個需要「addon」接口的Java項目。我正在考慮加載一些類文件,這些類文件具有默認方法,如initialize()
和shutdown()
,這些類文件將在類加載到應用程序後調用。這是做到這一點的方式嗎?我將如何處理這個問題?包含Java類並在運行時運行它們
0
A
回答
3
-1
public class SomeClass {
static {
System.out.println("Being called with the class is loaded");
initialize();
}
static void initialize(){}
}
這是你的問題嗎?
1
首先,您需要一個ClassLoader
;您可以使用getClass().getClassLoader()
獲得當前版本,但是您的插件類必須位於類路徑中。您可能需要創建一個自定義類加載器來搜索您的插件目錄。
一旦你得到了ClassLoader
,你可以使用它load a class。這給你一個Class
對象;如果存在,則可以使用反射來調用initialize()
方法。
0
實現插件的另一個好方法是java.util.Serviceloader。看看javadocs,他們解釋了原理。
1
如果你看更復雜的東西,你可以試試:http://jpf.sourceforge.net。
... JPF提供了一個動態發現並加載「插件」的運行時引擎。插件是一個結構化的組件,它使用「manifest」向JPF描述自己。 ...
相關問題
- 1. 生成JAVA文件並在運行時使用它們
- 2. 包含WebSphere運行時
- 3. Directshow運行時庫是否包含在DirectX運行時中?
- 4. Java一次運行一個線程時,它應該一起運行它們
- 5. 編譯Java在cmd並運行它
- 6. 在Java運行時確定基類在運行時
- 7. JAR中的多個可運行類,如何運行它們?
- 8. 在運行時包含和排除庫
- 9. 在運行時生成DataList包含Div
- 10. 包含圖像的Applet在瀏覽器中運行時不會顯示它們
- 11. Jar vs DLL - 它們運行類似嗎?
- 12. java中的運行時類
- 13. 在運行時運行Java文件
- 14. 在運行時創建對象並枚舉它們
- 15. 在運行時創建控件並訪問它們的值
- 16. 如何在運行時創建對象並移動它們?
- 17. 硒並行運行 - 當我們將它們與Thread Local概念並行運行時,測試用例在中間失敗,每次運行拋出diff錯誤
- 18. 在LINQ中加入列並運行包含運算符
- 19. Ansible:安裝角色包並運行它
- 20. 重新編譯並在運行時重新運行Java代碼
- 21. 遠程運行SSIS軟件包 - 它們在哪個帳戶下運行?
- 22. 記錄硒測試並從Java運行它們
- 23. 模塊何時包含在運行在rails中的Ruby類中?
- 24. Java + Eclipse:存儲常量並在運行時調整它們的最佳方法
- 25. 將類(腳本?)添加到構建的Java程序並在運行時執行它們的方法
- 26. 如果行不包含另一行,合併它們
- 27. C++條件包含文件運行時
- 28. PHP:運行phing時只包含文件?
- 29. 運行TestNG.xml時包含Tomcat庫
- 30. 必須包含在類路徑中運行時異常
你問動態加載類或定義一個類的初始化行爲? – 2009-05-18 19:32:07
動態加載類。 – Baversjo 2009-05-18 19:38:44