在Java中動態新增Classpath

, , 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:

相關文章

  1. 1 Trackback(s)

  2. Feb 10, 2006: 今日連結 (2006-02-09) [JeffHung.Blog]

Post a Comment