编译 Java 文件时出错无法找到符号

ERROR CANNOT FIND SYMBOL when compiling a Java file

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

  1. javac Hello.java
  2. javac HelloImpl.java
  3. javac HelloServer.java
  4. javac HelloClient.java
  5. 启动 rmiregistry
  6. 启动java-Djava.security.policy=策略服务器
  7. 启动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);
        }
    }
}


问题终于解决了,步骤如下

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