java - 启动并运行 Java RMI

标签 java rmi

我正在尝试运行此 Sun 教程中的示例代码:

http://download.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html

我已将他们的所有代码准确复制到 Eclipse 项目中,并从终端运行“rmiregistry &”(我正在运行 OSX)。

当我尝试运行服务器时,我得到

Server exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: suntut.Hello

freenode 上的 #java 向我保证,注册表本身不需要了解有关我的类的任何信息。但似乎更奇怪的是,问题出在我的文件名或其他东西上——所有三个类在编译时都能很好地看到彼此,它们都在 Eclipse 项目中的同一个包中,等等。任何人都可以帮助我开始诊断这个问题吗?

更新: 我也尝试从命令行运行它。从/Users/[me]/workspace/[Projectname]/testing/我跑了

java suntut/Server

并得到了完全相同的错误。 (这是使用 javac 成功编译所有内容之后的结果)

最佳答案

如果这是您第一次使用 RMI,我建议您按照说明启动,不要更改任何内容(即,甚至不更改包名称)。这使得其他人可以轻松地帮助您,并且您犯错误的可能性也很低。

暂时放弃 Eclipse 并尝试按照教程中的说明进行操作。使用 IDE,您最终会将 IDE 和实际问题混为一谈。也就是说,运行 Java 类时必须使用完全限定的类名。如果测试是包名称的一部分,则必须使用 testing.suntut.Server 而不仅仅是 suntut.Server

关于java - 启动并运行 Java RMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678525/

相关文章:

java - 插入二叉搜索树

java - J2EE 到 Java 独立应用程序的通信

java - Spring分布式事务涉及RMI调用可能吗?

java - RMI 内存不足异常

java - Split 方法是将字符串拆分为单个字符串

java - 是否可以使用 jsp 变量值来初始化 JQUERY 变量?

java - 为什么 RMI 客户端需要在类路径中包含 stub ?

java - 如何拒绝客户端解除RMI注册中心的绑定(bind)?

Java - 接口(interface)是否过多?

java - 你如何通过 map 搜索?