我開發了一個應用程序,根據本教程加載插件dinamicaly: http://solitarygeek.com/java/a-simple-pluggable-java-application,但我遇到了一個問題。 在我的主應用程序中,我有一個靜態方法的類,如何從我的插件中訪問該類? 當我嘗試從加載的插件訪問類時,它給了我一個錯誤,即找不到類,儘管插件和應用程序正在運行。 謝謝java在Java中實現動態插件
1
A
回答
1
在插件架構中,您不應該直接訪問插件實現類。您可以使用的接口是接口,通過它您可以訪問實施類的實例。這顯然排除了任何靜態方法。將這些方法重構爲實例方法並通過接口公開它們。
0
聽起來像一個類加載器的問題。加載插件的類加載器不會看到您的主類。沒有代碼示例就很難再說了。
+0
謝謝,我想你是對的,我從sysLoader =(URLClassLoader)ClassLoader.getSystemClassLoader();到sysLoader =(URLClassLoader)MainClass.class.getClassLoader();它似乎工作 –
0
我設法creting一個類加載器與應用程序的類加載器這樣的父類加載器來解決我的問題:
URLClassLoader的MyLoader =新的URLClassLoader(新的URL [] {},MyClass.class.getClassLoader()),現在,我的應用程序中加載的所有類對於使用MyLoader加載的插件是可見的
相關問題
- 1. 在Java中實現動態插件
- 2. Java動態加載插件
- 3. 在java中的RedBlackTree插入實現
- 4. Java動態代理的實現
- 5. Java的動態實現抽象方法
- 6. 動態加載Java接口的實現
- 7. 實現在Java中
- 8. 實現用java插座
- 9. Java靜態列表實現
- 10. Java中的Java實現
- 11. 在動作中Java Map等效實現?
- 12. 在java中實現自動提醒
- 13. 在Java中實現去抖動
- 14. 在非活動Java類中實現onActivityResult
- 15. 在Java中如何實現動態綁定?
- 16. 如何在Java中實現動態責任鏈?
- 17. 有沒有辦法在Java中動態實現接口?
- 18. 在分頁中實現動態頁面化struts2 + java
- 19. 在Java中實現可丟棄事件?
- 20. 如何在Java文件中實現JXLS?
- 21. 在Java文件中實現HTML
- 22. 在Java中的diff實現
- 23. 在Java中實現SAML SSO
- 24. 在java中實現堆棧
- 25. 在java 1.4.2中實現Comparable
- 26. 在Java中實現Trie
- 27. 如何在Java中實現
- 28. 用於在Java中實現
- 29. 在Java中實現SSL clientAuth
- 30. 在Java中實現BFS
感謝您的回覆,但似乎有辦法做到這一點 –
如果您篡改了可能有辦法做到這一點與插件基礎設施實施,但它只會打破實施。插件體系結構的基本要求是插件只能通過其公共接口從其他插件中看到。對於其他插件的實現類,必須沒有靜態依賴關係,因爲另一個插件無權假定它們會在那裏。 –
我現在看到了,我應該尊重這個原則,謝謝 –