非法使用java_java中的非法远程方法
这是我第一次使用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中的非法远程方法相关推荐
- getparameter java_java中getAttribute与getParameter方法的区别
知识点1:getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为object对象类型 例:re ...
- 时间戳 java_java中获取时间戳的方法
在java开发过程中经常会遇到统计某一天或是某一个月的数据,因此常常需要获取截取数据的两个时间戳(比如统计今天的数据,则需要获取一个开始时间为今天零点以及一个结束时间为明天零点),然后根据数据相关的时 ...
- string 方法 java_java中常用的String方法
1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...
- file java_Java中File常用的方法汇总
packagecom.file;importjava.io.File;importjava.io.IOException;/*** file相关的方法 * *@authorcoco_xu **/ pu ...
- flowlayout java_java中FlowLayout的使用方法
到目前为止,所有的程序片都被建立,看起来使用一些不可思议的内部逻辑来布置它们的组件.那是因为程序使用一个默认的方式:FlowLayout.这个简单的"Flow"的组件安装在窗体中, ...
- Java知识整理——远程方法调用
什么是RMI ? Java远程方法调用(RMI)是一个Java API,它执行的面向对象的等价远程过程调用(RPC)的方法,包括了直接传输序列化的Java类和分布式垃圾收集的支持. 远程方法调用(RM ...
- VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
VS2017 启动调试出现 无法启动程序"http://localhost:15613" 操作在当前状态中是非法的. 同时附加进程也是错误的解决方法 参考文章: (1)VS2017 ...
- SVN Files 的值“ .mine”无效。路径中具有非法字符。
错误 1 Files 的值" < < < < < < < .mine"无效.路径中具有非法字符. 今天使用SVN进行更新的时候,出 ...
- 检查xml文件中包含非法xml字符的个数(
xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内.另一类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符. 第一类字符 对于第一类字 ...
最新文章
- java 年计算_JAVA计算年/周的问题
- caffe中在某一层获得迭代次数的方法以及caffe编译时报错 error: ‘to_string‘ is not a member of ‘std‘解决方法
- 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录
- 多线程情况下创建连接池
- python多线程下载ts_基于Python的ERA-5多线程下载(1)
- linux执行jar包命令没有主清单熟悉,jar命令成功完成 java -jar 命令却提示“没有主清单属性”!...
- source insight 深色主题配置文件
- 基于Geoserver配置多图层地图以及利用uDig来进行样式配置
- C++ 变量初始化规则
- python char 相等_用 Python 实现 Excel文本函数
- Network Virtualization In Solaris 11
- HTML实现学习网站首页
- SDRAM控制器——添加读写FIFO
- 使用 PyQt5 和 Echarts 打造股票数据看板
- 解决Microsoft Store应用商店打不开 代码: 0x80131500
- iOS 真机调试 Bundle Identifier
- 量化投资与python语言_在量化投资领域,为什么Python如此受欢迎?
- Linux dd 命令 限制文件夹大小
- wb在计算机知识里是什么意思,相机上的WB,ISO,S和EV是什么意思?
- tensorflow计算flops
热门文章
- Failed to restart docker.service: Unit is masked.真正的解决办法
- 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)
- python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN
- 日志输出到文件nacos 配置_python 配置日志输出到终端与文件
- 优必选发布新一代大型机器人Walker X
- Android APK签名原理
- InputService
- Android 编译FFmpeg x264
- 楼层平面放线及标高实测记录_建筑施工基础测量放线工作内容
- py获取前端的参数_鹅厂技术说 | 深入理解前端性能监控