为什么我的rmi 服务器已经成功注册工作正常, 但是客户端远程调用时报错找不到stub类呢
小妹刚写好了一个rmi的 程序,服务器端和客户端分布在不同机器上,服务器端已经成功生成了stub和skeleton类,并且成功注册,服务器启动正常,客户端如果是在cmd下运行就工作正常,但是用jbuilderx运行,就出错了,远程调用服务器端代码,
客户端如下:
package fund.rmi.client ;
import java.rmi.*;
import java.net.*;
import java.io.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class rmiClient {
public rmiClient() {
}
public boolean executeImport(){
String host = "202.113.121.214:1099";
boolean str=true;
try {
// Registry registry = LocateRegistry.getRegistry(3333);
System.setSecurityManager(new RMISecurityManager());
rmiInter rmistub =(rmiInter) Naming.lookup("rmi://" + host + "/HelloService");
System.out.println("this is client ..................");
str=rmistub.executeImport() ;
System.out.println("client message import---------"+str);
}catch(Exception e){
e.printStackTrace() ;
str=false;
}
return str;
}
public boolean executeExport(){
String host = "202.113.121.214:1099";
boolean str=true;
try {
Registry registry = LocateRegistry.getRegistry("202.113.121.214",1099);
System.setSecurityManager(new RMISecurityManager());
rmiInter rmistub =(rmiInter) Naming.lookup("rmi://" + host + "/HelloService");
System.out.println("this is client ..................");
str=rmistub.executeExport() ;
System.out.println("client message export---------"+str);
}catch(Exception e){
e.printStackTrace() ;
str=false;
}
return str;
}
public static void main(String args[]){
String host = "202.113.121.214:1099";
rmiClient client=new rmiClient();
System.out.println("this is client ..................");
System.out.println("client message1 export---------");
client.executeExport() ;
System.out.println("client message1 import---------");
}
}
在jbuilderx的 错误提示中写道:
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmiImpl_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at fund.rmi.client.rmiClient.executeExport(rmiClient.java:37)
at fund.rmi.client.rmiClient.main(rmiClient.java:55)
Caused by: java.lang.ClassNotFoundException: rmiImpl_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
... 4 more
看来是找不到stub类,我在部署客户端是,把服务器端生成的stub类已经拷贝到了客户端了 与上边的类在同一个目录下,可是为什么找不到呢?小妹在线等,谢谢各位大侠了
问题点数:20、回复次数:1Top
1 楼Henu(守护进程)回复于 2005-11-10 19:38:44 得分 0
顶你Top




