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 RMI 回调表异常中没有此类对象

Java RMI 同步

java - 以编程方式将 Unicode 转换为转义的 Unicode

java - hibernate 如何解析用于初始验证 Teradata 数据库的架构?

java - InApp 计费安全和远程方法调用

java - 是否有像 SoapUI 那样用于 Java RMI 测试的工具用于 Web 服务?

java - 什么时候是使用应用服务器的合适时机?

java - 如何在运行时从加载的 log4j 配置中获取特定值?

java - javafuse 有机会工作吗?

java - SwingUtilities.invokeLater 需要一个 Runnable 并在 EDT 上运行它?