就在我认为我知道RMI是如何工作的时候,它会回来告诉我我没有。以下情况:
我已经给出了:
界面提供了清晰的3个getter方法来获取有关对象的信息。我只想查找对象调用三种方法并打印出他们的值:
但是,以下实现(http://pastebin.com/d4JS0Wai)不会导致以下异常:
线程“main”中的异常java.rmi.UnmarshalException:错误解组返回;嵌套异常是: java.lang.ClassNotFoundException:文章 at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 在rmi.ArticleDisplayer.main(ArticleDisplayer.java:21)
引起:java.lang.ClassNotFoundException:文章 在java.net.URLClassLoader $ 1.run(未知来源) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) ...
另外,我不知道为什么我还需要一个SecurityManager,因为我的机器没有执行代码。代码在运行rmiregistry的机器上执行。无论如何,这是我的政策文件:http://pastebin.com/chGEqceA
答案 0 :(得分:0)
出现此问题的原因是客户端和源应用程序都应该可以访问相同的 Article
类。
您可以使用2个模块(客户端和服务器)使用的公共类进行Jar
并使用它(我通常将这些名称称为“commons”)。
答案 1 :(得分:0)
好的,问题的答案是:
实现以及接口都在默认包中。我在自己的包中编写了程序:rmi
我下载的接口也在rmi包中。事实上,rmi.Article!=文章。