我是靠谱客的博主 背后糖豆,最近开发中收集的这篇文章主要介绍java动态加载类 框架_java运用RMI框架类的动态加载不成功,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

1.

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

2.

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

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

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

各种尝试

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

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

3.

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

ps

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

文件结构

client

F:RMIEchoclientEcho.class

F:RMIEchoclientEchoClient.class

download

F:RMIEchodownloadEcho.class

F:RMIEchodownloadEchoImpl.class

server

F:RMIEchoserverEchoServer.class

F:RMIEchoserverEchoImpl.class

F:RMIEchoserverEcho.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框架类的动态加载不成功的全部内容,希望文章能够帮你解决java动态加载类 框架_java运用RMI框架类的动态加载不成功所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部