这是我第一次使用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.(Unknown Source)

at java.rmi.server.UnicastRemoteObject.(Unknown Source)

at NodeImpl.(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

这里是界面:

import java.rmi.*;

import java.util.LinkedList;

interface Node extends Remote

{

public boolean isAlive();

public LinkedList getLeafNodes();

public LinkedList getNeighborhoodList();

public String [] getRoutingTable();

public NodeImpl initiation(String credentials,Object application);

public String route(String message,String key);

public void inform(byte [] id);

public String getId();

public boolean isConnected();

public void applicationClose();

public boolean distanceMeasure();

}

这里是类的构造函数:

public NodeImpl() throws RemoteException

{

super();

l=4;

M=1;

nodeId=new byte [16];

Random r=new Random();

r.nextBytes(nodeId);

leafNodes=new LinkedList();

connected=false;

ng=new NodeGUI(this);

for(int i=0;i

{

leafNodes.add(null);

}

neighborhoodList=new LinkedList();

anyNodeWhoAnswered=new LinkedList();

it=new InformingTimer(this);

Thread informingTimerThread=new Thread(it);

informingTimerThread.start();

try

{

Naming.rebind("rmi://" + "localhost" + ":1099/"+nodeId, this);

}

catch (Exception ex)

{

Logger.getLogger(NodeImpl.class.getName()).log(Level.SEVERE, null, ex);

}

bootstrap();

}

非法使用java_java中的非法远程方法相关推荐

  1. getparameter java_java中getAttribute与getParameter方法的区别

    知识点1:getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为object对象类型 例:re ...

  2. 时间戳 java_java中获取时间戳的方法

    在java开发过程中经常会遇到统计某一天或是某一个月的数据,因此常常需要获取截取数据的两个时间戳(比如统计今天的数据,则需要获取一个开始时间为今天零点以及一个结束时间为明天零点),然后根据数据相关的时 ...

  3. string 方法 java_java中常用的String方法

    1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...

  4. file java_Java中File常用的方法汇总

    packagecom.file;importjava.io.File;importjava.io.IOException;/*** file相关的方法 * *@authorcoco_xu **/ pu ...

  5. flowlayout java_java中FlowLayout的使用方法

    到目前为止,所有的程序片都被建立,看起来使用一些不可思议的内部逻辑来布置它们的组件.那是因为程序使用一个默认的方式:FlowLayout.这个简单的"Flow"的组件安装在窗体中, ...

  6. Java知识整理——远程方法调用

    什么是RMI ? Java远程方法调用(RMI)是一个Java API,它执行的面向对象的等价远程过程调用(RPC)的方法,包括了直接传输序列化的Java类和分布式垃圾收集的支持. 远程方法调用(RM ...

  7. VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法

    VS2017 启动调试出现 无法启动程序"http://localhost:15613" 操作在当前状态中是非法的. 同时附加进程也是错误的解决方法 参考文章: (1)VS2017 ...

  8. SVN Files 的值“ .mine”无效。路径中具有非法字符。

    错误 1 Files 的值" < < < < < < < .mine"无效.路径中具有非法字符.     今天使用SVN进行更新的时候,出 ...

  9. 检查xml文件中包含非法xml字符的个数(

    xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内.另一类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符. 第一类字符 对于第一类字 ...

最新文章

  1. java 年计算_JAVA计算年/周的问题
  2. caffe中在某一层获得迭代次数的方法以及caffe编译时报错 error: ‘to_string‘ is not a member of ‘std‘解决方法
  3. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录
  4. 多线程情况下创建连接池
  5. python多线程下载ts_基于Python的ERA-5多线程下载(1)
  6. linux执行jar包命令没有主清单熟悉,jar命令成功完成 java -jar 命令却提示“没有主清单属性”!...
  7. source insight 深色主题配置文件
  8. 基于Geoserver配置多图层地图以及利用uDig来进行样式配置
  9. C++ 变量初始化规则
  10. python char 相等_用 Python 实现 Excel文本函数
  11. Network Virtualization In Solaris 11
  12. HTML实现学习网站首页
  13. SDRAM控制器——添加读写FIFO
  14. 使用 PyQt5 和 Echarts 打造股票数据看板
  15. 解决Microsoft Store应用商店打不开 代码: 0x80131500
  16. iOS 真机调试 Bundle Identifier
  17. 量化投资与python语言_在量化投资领域,为什么Python如此受欢迎?
  18. Linux dd 命令 限制文件夹大小
  19. wb在计算机知识里是什么意思,相机上的WB,ISO,S和EV是什么意思?
  20. tensorflow计算flops

热门文章

  1. Failed to restart docker.service: Unit is masked.真正的解决办法
  2. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)
  3. python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN
  4. 日志输出到文件nacos 配置_python 配置日志输出到终端与文件
  5. 优必选发布新一代大型机器人Walker X
  6. Android APK签名原理
  7. InputService
  8. Android 编译FFmpeg x264
  9. 楼层平面放线及标高实测记录_建筑施工基础测量放线工作内容
  10. py获取前端的参数_鹅厂技术说 | 深入理解前端性能监控