2011-11-25 61 views
5

在問之前,請明白我的英語不好。是否可以使Class.forName(「」)變得靈活?

我使用一個servlet編程Class.forName(...)類。當我訪問servlet時,我從數據庫中獲得一行詳細的控制器信息,指示要使用哪個控制器。

這是Class.forName(...)我編碼:

Class c = Class.forName(row.getControllerInfo); 
c.newInstance(); 

這工作得很好,但有一個問題,我使用Eclipse。問題是,當我修改控制器文件時,更改的內容未應用於服務器。

+0

您項目中的一些代碼示例可能會幫助我們看到問題 –

+0

只要確保:您不會緩存使用'newInstance()'創建的實例,那麼每次調用'newInstance()'的請求都會如此緩存? – home

+0

我使用IntelliJ,當我重命名或移動一個類時,它使我可以選擇將其重命名爲字符串和文本/ xml /屬性文件。也許在eclipse中有類似的選項。 –

回答

0

如果我明白你的問題屬實, 當您更改項目的任何文件,則必須部署您的項目到服務器。如果您使用eclipse中的服務器,重新發布可能會解決您的問題。

+0

是的,我部署所有更改的文件,但問題是隻有當我使用Class.forName(); – user1065108

0

你試過乾淨 - 重新構建,然後部署你的應用程序?

2

可能最簡單的方法是不支持動態加載。通過支持多個服務器可以更好地實現動態更新。對於開發,您可以通過使用JRebel解決重新部署延遲(可能還有其他問題)。

如果你真的想動態加載類,那麼答案是「類加載器」。我建議看看這些,並回來提出任何具體問題。

+0

哇...你是天才thx .... GOOD DAY – user1065108

+0

我發現了另一個有用的程序,它可以幫助「運行時類加載」,請訪問這裏查看更多信息http://ssw.jku.at/dcevm/ – user1065108