我正在尝试运行此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 / I ran
java suntut/Server
并得到完全相同的错误。 (这是在使用javac成功编译所有内容之后)
答案 0 :(得分:1)
如果这是您第一次使用RMI,我建议您按照说明进行引导,而不更改任何内容(即,甚至不包括程序包名称)。这使得其他人可以很容易地帮助你,并且你犯错误的可能性很低。
暂时不要使用Eclipse并尝试按照教程中的说明操作。使用IDE,您最终会混合IDE和真正的问题。话虽这么说,但在运行Java类时必须使用完全限定的类名。如果测试是软件包名称的一部分,则必须使用testing.suntut.Server
而不是suntut.Server
。