2011-01-10 82 views
1

我正在嘗試將Eclipse RCP和RMI結合起來。爲此目的,我創造了6包: (括號中是依賴)Eclipse RCP,RMI和Bundle

  • 核心:接口的客戶端和服務器
  • 服務器(核心):服務器執行和註冊表啓動類
  • ServerApp(服務器): GUI客戶端,它基本上只是實例註冊表啓動(並啓動它激活)
  • 客戶端(核心):客戶端執行
  • ClientApp(客戶端):GUI客戶

現在我開始serverapp,但我得到了一個

Caused by: java.lang.ClassNotFoundException: core.rmi.CallbackServerInterface (no security manager: RMI class loader disabled) 

現在,我開始了服務器

-consoleLog -Djava.security.policy=java.policy -Djava.rmi.server.codebase=file:${workspace_loc}/core/ 

(我的java.policy文件是在覈心插件)。 我認爲問題是類路徑。所以我做了核心和服務器的好友:

Eclipse-BuddyPolicy: registered 

在覈心軟件包清單文件和

Eclipse-RegisterBuddy: core 

在服務器包清單文件。 這並沒有幫助,因爲我得到了完全相同的錯誤。

有沒有人知道我可能在這個問題上出錯了?

回答

1

顯然問題是,OSGI使用它自己的類加載器。因此,在我們進行命名綁定之前,我們需要:

Thread.currentThread().setContextClassLoader(
        this.getClass().getClassLoader()); 

在此之後,服務器就像魅力一樣工作,客戶端可以連接。