【问题标题】:Eclipse RCP, RMI and BundlesEclipse RCP、RMI 和捆绑包
【发布时间】:2011-01-10 19:26:26
【问题描述】:

我正在尝试将 Eclipse RCP 与 RMI 结合起来。为此,我创建了六个捆绑包: (括号内是依赖项)

  • 核心:客户端和服务器接口
  • Server(Core):服务器实现和注册表启动类
  • ServerApp(Server):GUI 客户端,它基本上只是实例化注册表启动器(并在激活时启动它)
  • 客户端(核心):客户端实现
  • ClientApp(Client):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

在服务器捆绑清单文件中。 这没有帮助,因为我得到了完全相同的错误。

有谁知道我在这个问题上哪里出错了?

【问题讨论】:

    标签: eclipse-rcp classloader rmi bundle


    【解决方案1】:

    显然问题在于,OSGI 使用了自己的类加载器。所以在我们进行命名绑定之前,我们需要:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-30
      • 2010-11-04
      • 2021-06-10
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2013-05-30
      • 2012-12-23
      相关资源
      最近更新 更多