String url="rmi://localhost/";
System.setSecurityManager(new RMISecurityManager());
Context namingContext=new InitialContext();
User u=(User)namingContext.lookup(url+"User");
Register reg=(Register)Naming.lookup(url+"Register");报错:javax.naming.NameNotFoundException: User
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at RegisterClient.<init>(RegisterClient.java:16)
at Client$1.actionPerformed(Client.java:102)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

解决方案 »

  1.   

    我觉得你没注册对
    服务端try {
    IHello h=new Hello();
    LocateRegistry.createRegistry(8888);
    Naming.bind("rmi://localhost:8888/RHello",h);
    } catch (RemoteException e) {
    e.printStackTrace();
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (AlreadyBoundException e) {
    e.printStackTrace();
    }客户端IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello");
    System.out.println(rhello.sayHelloFromClient("leo"));IHello是接口,继承了Remote
    Hello是实现类,并且继承了UnicastRemoteObject
      

  2.   

    这是我的服务器的代码:import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public class Server {
    public static void main(String[] args) {
    try {
    User ui=new UserImpl();
    LocateRegistry.getRegistry();
    Naming.rebind("rmi://localhost/User", ui);
    Register reg=new registerImpl();
    Registry register2=LocateRegistry.getRegistry();
    register2.rebind("rmi//localhost/Register", reg);
    System.out.println("服务器已经启动!");
    } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }
    }
    能帮我看一下吗?急啊!
      

  3.   

    User ui=new UserImpl();
    LocateRegistry.createRegistry(1099); //指定端口号
    Naming.rebind("User", ui); //这个地方不用url,只是指定你的name,即“user”,只是在调用的时候才加url的,请记住了。
      

  4.   

    String url="rmi://localhost/";
    try {
    System.setSecurityManager(new RMISecurityManager());
    User u=(User)Naming.lookup(url+"User");
    u.setNo(a);
    u.setName(b);
    u.setSex(c);
    u.setPassword(d);
    // Context namingContext=new InitialContext();
    // Register reg=(Register)namingContext.lookup(url+"Register");
    // reg.zhuce(u);
    System.out.println("注册成功");
    System.out.println(u.getPassword());
    System.out.println(url);

    }  catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();

    为什么我把那些屏蔽的代码弄成屏蔽的就能运行。为什么不把他们屏蔽就报错。
    报错代码:javax.naming.NameNotFoundException: Register