我想创建一个RMI应用程序。我在系统变量中设置了Java路径,并从以下步骤开始


javac Hello.java
javac HelloImpl.java
javac HelloServer.java
javac HelloClient.java
开始注册
启动java -Djava.security.policy =策略服务器
启动java -Djava.security.policy =策略客户端


但是在第二步中我有这个问题

    C:\Users\HP\eclipse\SimpleRMIExample\src>javac Hello.java

C:\Users\HP\eclipse\SimpleRMIExample\src>javac HelloImpl.java
HelloImpl.java:4: error: cannot find symbol
public class HelloImpl extends UnicastRemoteObject implements Hello {
                                                              ^
  symbol: class Hello
1 error




//Hello.java
import java.rmi.*;

public interface Hello extends Remote {
    public String getGreeting() throws RemoteException;
}

//HelloImpl.java
import java.rmi.*;
import java.rmi.server.*;

public class HelloImpl extends UnicastRemoteObject implements Hello {
    public HelloImpl() throws RemoteException {
        // No action needed here.
    }

    public String getGreeting() throws RemoteException {
        return ("Hello there!");
    }
}

//HelloServer.java
import java.rmi.*;

public class HelloServer {
    private static final String HOST = "localhost";

    public static void main(String[] args) throws Exception {
        // Create a reference to an implementation object...
        HelloImpl temp = new HelloImpl();
        // Create the string URL holding the object's name...
        String rmiObjectName = "rmi://" + HOST + "/Hello";
        // (Could omit host name here, since 'localhost‘ would be assumed by default.)
        // 'Bind' the object reference to the name...
        Naming.rebind(rmiObjectName, temp);
        // Display a message so that we know the process has been completed...
        System.out.println("Binding complete...\n");
    }
}

//HelloClient.java
import java.rmi.*;

public class HelloClient {
    private static final String HOST = "localhost";

    public static void main(String[] args) {
        try {
            // Obtain a reference to the object from the registry and typecast it into the
            // appropriate
            // type...
            Hello greeting = (Hello) Naming.lookup("rmi://" + HOST + "/Hello");
            // Use the above reference to invoke the remote object's method...
            System.out.println("Message received: " + greeting.getGreeting());
        } catch (ConnectException conEx) {
            System.out.println("Unable to connect to server!");
            System.exit(1);
        } catch (Exception ex) {
            ex.printStackTrace();
            System.exit(1);
        }
    }
}


最佳答案

问题终于解决了,这里是步骤


编辑系统环境变量->环境变量->用户变量
-> CLASSPATH(如果找不到则添加)-> path-project-bin-folder
(C:\ Users \ HP \ eclipse \ SimpleRMIExample \ bin)
仅限第一次
重启
仅限第一次
清洁项目
命令:启动rmiregistry(在项目的bin文件夹中)
运行项目

09-27 19:45