2

我正在尝试让 RMI 可激活服务器工作 - 但到目前为止还没有运气。实际上服务器似乎在运行,但客户端触发了一个奇怪的异常。

我有3个项目:

  • 客户
  • 常见的
  • 服务器

常见的是客户端和服务器之间的共享代码(例如远程接口)。

我遵循的步骤(一直在调整本教程):

  • 启动注册表 --> 确定
  • 运行 rmid --> 确定
  • 开始服务器设置 --> 确定
  • 启动客户端-> BOOM!激活失败,因为在服务器线程中找不到带有 NoClassDefFoundError 的公共类。

我在服务器的代码库中包含了公共类文件,因此这些类/接口应该对服务器可用。它在远程接口本身上消失了——所以唯一的选择似乎是将所有公共代码拉到服务器代码中,但是这样客户端代码将不得不知道服务器代码,这很糟糕。

我做了一些浏览,看起来这个人在这里遇到了完全相同的问题。

看起来在这两种情况下,当可激活服务器引用其他包中的类时都会发生这种情况(在我的情况下,它是第三方链接中的自定义包)。

我真的在这里不知所措 - 所以任何想法都会受到赞赏!

编辑:一些附加信息 - 我正在尝试调试问题。客户端似乎很好地检索了主题中的远程对象(引用不为空)。一旦调用远程接口的方法(客户端知道该接口),就会抛出异常。如果激活发生在第一个方法调用上,那么这很明显 - 但不太确定它何时实际尝试激活远程对象/服务器。

4

1 回答 1

2

您是否在设置期间将公共包中的类包含在服务器上可激活类的位置?如果您有多个路径,请确保用空格分隔它们。

于 2009-12-29T03:46:15.507 回答