在Java中動態新增Classpath
development, java, Tech at February 8th, 2006 by 小影
設計可以動態擴展的系統時,常常要讀取在設計期未知道的Class,這可以用Java的反射(Reflection)機制解決。但問題是這些新Class往往也是不在原本部處署的CLASSPATH之中,想真正動態地擴展系統我們必須要可以動態由外部的jar中讀取新的Class。
在ClassLoader和子類搜尋後發現URLClassLoader有個addURL()方法,理想的情況是呼叫它就可以把新的URL加到Class Path — 可惜這是個protected方法,不是他的子類就不能呼叫這個function。原本想要放棄的時候看到java.net中有相關的討論,它提醒我們只要用Reflection就可以偷偷地呼叫protected的method。
源碼1:增加URL到Classpath中
{[.src /enzymes/java.php]}
似乎是個dirty hack,不過它運作良好就是了。不知會否有直接一點的方法?
Reference:
- Modify Classpath At Runtime – Java Forums
- Create a custom Java 1.2-style ClassLoader
- Real-World Use For Custom ClassLoaders
1 Trackback(s)