2011-03-11 59 views
1

我想發送一個類文件以將客戶端的「工作」卸載到服務器。 我發送一個類文件「MyClass.class」併成功接收它作爲「MyFooClass.class」。在java中執行通過網絡發送的類文件

我需要在服務器端執行MyFooClass的main()並返回結果。

我想用classloader加載MyFooClass,但得到ClassNotFoundException。

請幫忙。

阿迪亞

+2

類名和文件名應該相同。 – Nishan 2011-03-11 05:31:02

+0

答案有幫助嗎?如果沒有,你可以發佈代碼並指出你的錯誤? – Victor 2012-05-04 15:41:05

回答

0

類名和文件名必須匹配。所以你不能簡單地重命名文件。

3

除非您正在做RMI,否則'服務器'端的類路徑中不會有該類,因此會因爲ClassNotFoundException而失敗。

現在更大的問題是你爲什麼要發送全班?我認爲讓服務器上的類更容易,然後在客戶端上發送類的狀態的文本表示(json,xml,yaml,csv),然後讓服務器讀取表示,創建類(它需要並執行工作。

+2

+1。發送可執行代碼聽起來像是一個安全問題。最好定義服務器可以執行的操作,併爲它們發送參數。 – Thilo 2011-03-11 05:37:25

1

是的,你不應該重命名類。類加載器將僅搜索MyFooClass.class,但可用的是MyClass.class..So它會拋出一個異常,說明預期的MyClass.class不可用。