2013-03-13 55 views
1

我希望能夠加載不同版本的JAR文件,代表客戶端API,這取決於我正在與之交談的服務器的版本。不幸的是,每個版本的服務器都需要不同的客戶端API。有沒有辦法創建一個基於指定的CLASSPATH查找類文件的ClassLoader?換句話說,我想告訴ClassLoader搜索類文件的位置序列。如何爲類加載器加載任意選擇的JAR?

回答

0

如果我理解正確,您需要一個自定義ClassLoader,它根據一些配置在不同位置查找。例如,在一種情況下,它可能在/ foo中查看,另一個在/ bar中,而在另一箇中它可能先看/ foo,然後看/ bar。如果這是正確的,那實際上並不難。查看URLClassLoader(http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html)。您可以指定ClassLoader指定哪些URL(可以是本地目錄或文件),以及「在首次搜索指定的父類加載器後,將按照爲類和資源指定的順序搜索URL」。

關鍵是父類ClassLoader不知道你不想搜索的路徑,因此你必須手動執行一些類路徑配置,而不是讓JVM來處理它。