Eclipse rcp Eclipse RCP、RMI和捆绑包

Eclipse rcp Eclipse RCP、RMI和捆绑包,eclipse-rcp,classloader,rmi,bundle,Eclipse Rcp,Classloader,Rmi,Bundle,我正在尝试将EclipseRCP与RMI结合起来。为此,我创建了六个捆绑包: (括号中是依赖项) 核心:客户端和服务器的接口 服务器(核心):服务器实现和注册表开始类 ServerApp(服务器):GUI客户端,基本上只是实例化注册表启动器(并在激活时启动) 客户机(核心):客户机实现 ClientApp(客户端):GUI客户端 现在我启动了服务器应用程序,但我得到了一个 Caused by: java.lang.ClassNotFoundException: core.rmi.Callba

我正在尝试将EclipseRCP与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文件在核心插件中)。 我认为问题在于类路径。因此,我与core和server成为好友:

Eclipse-BuddyPolicy: registered
在核心包清单文件中

Eclipse-RegisterBuddy: core
在服务器包清单文件中。 这没用,因为我犯了完全相同的错误


有人知道我在这一点上哪里会出错吗?

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

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

在这之后,服务器就像一个魔咒一样工作,客户端可以连接。

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

Thread.currentThread().setContextClassLoader(
                    this.getClass().getClassLoader());
在此之后,服务器就像一个魔咒一样工作,客户端可以连接