最近在看《java网络编程精解》,第11章中用RMI动态加载类,可怎么试都不成功,求大神解答

1.

我先在C盘下启动了rmiregistry注册表,如果部署成功注册表应该会从codebase指定位置动态加载类

2.

F:\RMIEcho\server\目录下启动了服务器,命令行如下

start java -Djava.rmi.server.code=file:\\\F:\RMIEcho\download\ EchoServer

报异常CommunicationException...,ClassNotFoundException: Echo]...

各种尝试

a.网上说是codebase设置错误,可路径没错呀,之后我又把download目录用tomcat发布到网络上,可还是不行,注册表找不到类文件。

b.在EchoServer中设置了安全策略文件,又报些安全管理器的异常,解决完这些异常,运行到bind又是找不到类,郁闷。。。EchoServer中应该可以不设置安全管理器的吧??貌似客户端需要动态下载类才用设置安全管理器吧???

3.

该启动EchoClient了,可服务端都没建好。。。啊啊啊啊。

ps

我把所有文件放在一个目录下是可以运行的,一分开就崩了。。。就这么点代码改了一晚上都没搞好,睡觉还梦到在改代码,郁闷呀,纯新手,大神们不要鄙视我。。。。

文件结构

client

F:\RMIEcho\client\Echo.class

F:\RMIEcho\client\EchoClient.class

download

F:\RMIEcho\download\Echo.class

F:\RMIEcho\download\EchoImpl.class

server

F:\RMIEcho\server\EchoServer.class

F:\RMIEcho\server\EchoImpl.class

F:\RMIEcho\server\Echo.class

代码

EchoServer.java

import java.rmi.RemoteException;

import java.rmi.RMISecurityManager;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

public class EchoServer {

public static void main(String[] args) {

try {

Echo echo = new EchoImpl();

Context namingContext = new InitialContext();

namingContext.bind("rmi:Echo", echo);

System.out.println("服务器注册了一个对象");

} catch (Exception e) {

e.printStackTrace();

}

}

}

EchoClient.java

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.rmi.RMISecurityManager;

import javax.naming.Context;

import javax.naming.InitialContext;

public class EchoClient {

public static void main(String[] args){

String url="rmi://localhost/";

try {

Context namingContext=new InitialContext();

Echo echo=(Echo)namingContext.lookup(url+"echo");

BufferedReader keyborad=new BufferedReader(new InputStreamReader(System

.in));

for(String line=keyborad.readLine();line!=null;line=keyborad.readLine()

){

System.out.println(echo.echo(line));

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

Echo.java

import java.rmi.Remote;

import java.rmi.RemoteException;

interface Echo extends Remote {

public String echo(String s)throws RemoteException;

}

EchoImpl.java

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

public class EchoImpl extends UnicastRemoteObject implements Echo{

EchoImpl()throws RemoteException{}

public String echo(String s){

return "echo:"+s;

}

}

java动态加载类 框架_java运用RMI框架类的动态加载不成功相关推荐

  1. java api 第一个类是_JAVA常用API:String 类的常用方法

    字符串是一个对象,有很多方法可以使用 1. length();返回字符串的长度 String str = "abcd"; int len = str.length(); 2. is ...

  2. java语言中的类可以_java 语言中的类

    类 一.类 类是具有相同性质的一类事物的总称, 它是一个抽象的概念. 它封装了一类对象的状态和方法, 是创建对象的模板. 类的实现包括两部分: 类声明和类体 类的声明 类声明的基本格式为: [ 访问权 ...

  3. 线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)

    一.什么是Executor框架? 我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等.线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1 ...

  4. java当前月份减一个月_Java对日期Date类进行加减运算、年份加减月份加减、时间差等等...

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public c ...

  5. java点击图片发出声音_Java 中图片和声音文件的加载

    /* * 本程序实现以下效果: * 1.界面显示一个按钮,按钮初始为红色. * 2.将鼠标移到按钮上时,按钮呈蓝色. * 3.点击鼠标,有声音效果. * 4.鼠标离开按钮时,按钮恢复成红色. */ i ...

  6. Java哪些是线程安全的_Java集合中那些类是线程安全的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  7. java反射调用接口方法参数_Java反射调用某个类的方法(带参数和不带参数)

    不多说,直接贴代码,不懂查API,现在就列取要用的方法和类. Class类: public Method getDeclaredMethod(String name, Class>... par ...

  8. java开发后端框架_java开发后端框架

    1 java开发后端框架 java从推出到现在技术不断发展,语言也优化的越来越好,对于java工程师来说技术的不断发展,他们需要不断学习java进阶,而对于新手来说就能从基础到核心.那么新手该怎么学习 ...

  9. java内部类人打电话依赖手机_Java内部类及反射类面试问题,90%的人都不知道

    1.静态嵌套类 (Static Nested Class) 和内部类(Inner Class)的不同? 静态嵌套类:Static Nested Class是被声明为静态(static)的内部类,它可以 ...

最新文章

  1. python基础之生成器,生成器函数,列表推导式
  2. ImageNet 存在十万标签错误,你知道吗?
  3. 大学生java项目创意申请表_基于java ee的大学生作品展示系统.pdf
  4. 一个不限制插值个数和上采样倍数的视频增强方法
  5. 几道经典的SQL题目
  6. java web 调度_javaweb车辆调度信息管理平台
  7. java 调用 libsvm_请问该如何调用libsvm 的java 库函数?
  8. 开放接口的安全验证方案(AES+RSA)
  9. 漆远离职阿里加盟复旦!大牛纷纷回归学界,大厂AI名存实亡?
  10. safari调试工具h5手机_iOS通过safari真机调试H5页面
  11. 火狐控制台的html,怎么使用火狐浏览器调试网页
  12. 技术管理之巅-如何从零打造高质效互联网技术团队?
  13. shadertoy学习记录(1)
  14. 关于一些Ubuntu网络问题的解决办法
  15. 路由协议RIP、OSPF、BGP比较
  16. 代码质量管理平台搭建
  17. 【Python】笨方法学Python学习笔记2
  18. Linux常用命令大全(史上最全)建议收藏!
  19. 数据数据泄露泄露_通过超参数调整进行数据泄漏
  20. Windows7端口被占用的解决办法(笔记本端口被占用)

热门文章

  1. 100道Java中高级面试题汇总+详细拆解
  2. Java多线程学习十一:你知道哪几种锁?各有什么特点
  3. python中assert是什么意思,python中assert断言的用法
  4. 【2019.08.21】2019杭电多校第十场
  5. Spring Boot动态修改日志级别
  6. 利用MSF批量打RMI漏洞
  7. TTL电平与CMOS电平
  8. PIXIV 爬取国际前100名代码
  9. 2014.12.1---Thema:EchartsD3
  10. jquery.ui.sortable 笔记