![](/img/trans.png)
[英]How to load a class from a Jar file at runtime with the Java Debug Interface
[英]How to load a class which implements a interface from a jar file at runtime?
我想實現一個可以使用用戶實現的類的應用程序。 每個類都應實現一個我定義接口的接口,最后,由用戶實現的所有類都應存儲在jar文件中。 用戶將jar文件復制到類路徑中,然后僅將jar文件名提供給我的應用程序。 我的應用程序應該能夠動態加載jar文件。 為此,我發現這篇文章非常有用,但是它通過類名加載類。 我想根據他們的父母來上課。
public class A implements iA {
@Override
int getAValue() { ... }
}
public class B implements iB {
@Override
int getBValue() { ... }
}
假設加載的jar文件同時具有A
和B
類。 我想通過了解iB
接口名稱從類B
獲取實例。
我該怎么辦?
看看這篇文章: 查找實現接口的Java類
它討論您想要的解決方案。
我知道我要提出的建議並不是最簡單的方法,但是您只是描述了Java插件體系結構的基本用例之一,以及OSGi的成功案例。
我建議您使用Apache Felix之類的工具,使用戶提供的jar實現一個簡單的osgi.BundleActivator,並將Interface的實現注冊為OSGi服務。 (這只是一個花哨的哈希圖,與REST服務等無關)。
然后,您可以獲取給定接口的所有實現。 它非常簡單。 您可以在此處查看Felix文檔: http : //felix.apache.org/site/apache-felix-framework-launching-and-embedding.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.