Java rmi 抛出各种异常
JRMITest.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jrmitest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author lisanhu-v570
*/
public class JRMITest {
private static final PrintStream out=System.out;
private static final BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
System.setSecurityManager(new RMISecurityManager());
try {
Test client=(Test)Naming.lookup("rmi://localhost:3333/obj");
System.out.println(client.getStr());
} catch (NotBoundException ex) {
Logger.getLogger(JRMITest.class.getName()).log(Level.SEVERE, null, ex);
} catch (MalformedURLException ex) {
Logger.getLogger(JRMITest.class.getName()).log(Level.SEVERE, null, ex);
} catch (RemoteException ex) {
Logger.getLogger(JRMITest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
package jrmitest;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Test extends Remote {
public String getStr() throws RemoteException;
}
package jrmitest;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class TestImpl extends UnicastRemoteObject implements Test {
public TestImpl() throws RemoteException{
}
public String getStr() throws RemoteException {
return "hello world";
}
}
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class Server {
private static final PrintStream err=System.err;
private static final int PORT=3333;
public static void main(String[] args) {
try {
TestImpl obj=new TestImpl();
LocateRegistry.createRegistry(PORT);
Naming.bind("rmi://localhost:3333/obj", obj);
System.out.println("Remote object bind success!");
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
}
}
}
grant {
permission java.security.AllPermission;
};
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at jrmitest.JRMITest.main(JRMITest.java:30)
Java Result: 1
如果设置了security.policy后
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: Test
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at jrmitest.JRMITest.main(JRMITest.java:30)
Caused by: java.lang.ClassNotFoundException: Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:730)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:674)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:611)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:257)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1549)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1511)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
... 3 more
以上异常均由客户端报出
请问应该如何解决
[其他解释]
自己顶一下自己顶一下
[其他解释]
问题解决
解决方案:把项目从netbeans中迁出到eclipse中
………………