Eclipse RCP,RMI和Bundles

时间:2011-01-10 19:26:27

标签: eclipse-rcp classloader rmi bundle

我正在尝试将Eclipse RCP与RMI结合使用。为此我创建了六个包: (括号中是依赖项)

  • 核心:客户端和服务器的接口
  • 服务器(核心):服务器实现和注册表启动类
  • ServerApp(服务器):GUI客户端,基本上只是实例化注册表启动器(并在激活时启动)
  • 客户(核心):客户端实施
  • ClientApp(客户端):GUI客户端

现在我开始了服务器,但我得到了一个

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 个答案:

答案 0 :(得分:1)

显然问题是,OSGI使用自己的Classloader。所以在我们进行命名绑定之前,我们需要:

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

此后,服务器就像魅力一样,客户端可以连接。