2010-08-13 72 views
0

在一個大量使用反射來選擇基於環境的類的項目中,有沒有一種方法可以確定在構建中包含哪些庫?目前,從項目中拿出一個圖書館是一場賭博,但堅持現有的「包括所有東西,這是唯一可以肯定的方式」的計劃,使整個事情變得臃腫和笨拙。類路徑和反射

+0

另外,檢查這個問題:http://stackoverflow.com/questions/3369791/java-vm-tuning-xbatch-and-xcomp – naikus 2010-08-13 07:49:21

回答

1

不幸的是,對於類動態加載,特別是使用類名稱作爲字符串傳遞的工廠來說,這不會有困難。

如果您的jvm支持-Xcomp and -Xbatch選項以及-XX:CompileThreshold,您可以在開發和測試環境中使用它。它會增加你的啓動時間。

這些選項只會讓您的工作更輕鬆,但您仍然可能需要徹底測試。

1

您可以使用JavaAssist lib在運行時包含新的類路徑或修改類。

Here is a brief tutorial

你可以註冊一個目錄名作爲類搜索路徑。例如,下面的代碼添加了一個目錄/ usr /本地/ javalib搜索路徑:

ClassPool pool = ClassPool.getDefault(); 
    pool.insertClassPath("/usr/local/javalib"); 

,該用戶可添加的搜索路徑不僅是一個目錄,但也有網址:

ClassPool pool = ClassPool.getDefault(); 
    ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist."); 
    pool.insertClassPath(cp);