所以我在Eclipse RCP应用程序中使用RMI。 RMI和OSGI的类加载器非常讨厌,但我可以解决我的第一个问题here。
我的服务器应用程序由服务器捆绑包组成,该捆绑包依赖于核心。此外,使用核心扩展点( DataUpdate )加载捆绑地图。
同样,客户端的启动取决于核心并加载地图作为插件。
现在从客户端向服务器发送用户不再有任何问题(解决了上述问题)。可悲的是反过来不起作用。 客户端在服务器上存储为回调,并且应该接收 DataUpdate 对象。这些是在服务器上的 Map 包中创建的,并通过RMI发送。当我在客户端收到它们时,我得到了不祥的ClassNotFound异常。我和服务器上做的一样:
Thread.currentThread().setContextClassLoader(
this.getClass().getClassLoader());
但这没有用。另外,要启动服务器和客户端,我的启动参数是:
-consoleLog -Djava.security.policy=java.policy -Djava.rmi.server.codebase=file:${workspace_loc}
在客户端,我将安全管理器设置为允许一切的个人实现。
所以有人有一个想法,为什么找不到课程?
答案 0 :(得分:0)
因此,愤世嫉俗的答案不是使用Sun RMI实现。
我现在使用Kryonet我可以设置通过网络发送的对象的类。由于这些类中的每一个都知道它的类加载器,因此问题得以解决。