这是我第一次使用java Rmi*.我有一个自定义类,它扩展UnicastRemoteObject并实现了一个扩展远程的接口.我认为我已经在类中正确实现了接口的方法,但是IllegalArgumentException当我尝试运行我的代码时,我仍然得到了一个(而且它是关于一个没有参数的方法).
jvm声称遇到了非法的远程方法,但该方法及其实现对我来说似乎没问题.
是否有任何其他原因导致除了错误地实现或调用方法之外可能发生此异常?
这是堆栈跟踪:
SEVERE: null
java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is:
java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String Node.getId()
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.<init>(Unknown Source)
at java.rmi.server.UnicastRemoteObject.<init>(Unknown Source)
at NodeImpl.<init>(NodeImpl.java:30)
at NodeLauncher.main(NodeLauncher.java:11)
Caused by: java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String Node.getId()
at sun.rmi.server.Util.checkMethod(Unknown Source)
at sun.rmi.server.Util.getRemoteInterfaces(Unknown Source)
at sun.rmi.server.Util.getRemoteInterfaces(Unknown Source)
at sun.rmi.server.Util.createProxy(Unknown Source)
... 7 more
Run Code Online (Sandbox Code Playgroud)
这是界面:
import java.rmi.*;
import java.util.LinkedList; …Run Code Online (Sandbox Code Playgroud) 是不是java 1.5或更新版本不需要rmi接口编译器,只编译使用javac定义UnicastRemoteObject的java文件就足够了?Rmic仍然有效,如果你给它类文件它会生成一个存根类文件远程对象的实现.
当我尝试在"."出现时拆分一个字符串.方法split返回一个长度为0的字符串数组.当我分开出现"a"时,它运行正常.有人知道为什么吗?分裂不应该使用标点符号吗?