有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

同一个包中的类的java ProcessBuilder给定程序错误“找不到符号”

我正在创建一个带有socket的客户机-服务器应用程序,当服务器死亡时,客户机需要重新启动服务器,以便继续使用该应用程序,其他用户可以连接到该应用程序。我正在尝试使用ProcessBuilder重新启动,这是我目前的代码:

 public void restartServer() {
        String command[] = {"javac",SERVER_FILE_LOCATION};
        ProcessBuilder processBuilder = new ProcessBuilder(command);

        try {
            Process process = processBuilder.start();

            if( process.getErrorStream().read() != -1 ){
                print("Compilation Errors",process.getErrorStream());
            }
            if( process.exitValue() != 0 ) {
                process = new ProcessBuilder(
                        new String[]{
                                "java",
                                "-cp",
                                "D:\\CE303\\Lab4\\assignment\\src\\Server\\",
                                "ServerProgram"}).start();

                if (process.getErrorStream().read() != -1) {
                    System.out.println("Errors " + process.getErrorStream());
                }
            }
            else{
                System.out.println("Output " + process.getInputStream());
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

print函数是一个处理错误并将其打印出来的函数。我得到了一个错误:

************* Compilation Errors***********************
:\CE303\Lab4\assignment\src\Server\ServerProgram.java:11: error: cannot find symbol
    private static final Market market = new Market();
                         ^
  symbol:   class Market
  location: class ServerProgram
D:\CE303\Lab4\assignment\src\Server\ServerProgram.java:11: error: cannot find symbol
    private static final Market market = new Market();
                                             ^
  symbol:   class Market
  location: class ServerProgram
D:\CE303\Lab4\assignment\src\Server\ServerProgram.java:26: error: cannot find symbol
                new Thread(new Server.ClientHandler(socket, market)).start();
                                     ^
  symbol:   class ClientHandler
  location: package Server
3 errors

出于某种原因,服务器无法识别这些类,即使它们在同一个包中并且是公共的。我不知道该怎么办,我不知道我是否需要在环境地图或其他任何东西上添加内容

编辑:我添加了我试图用ProcessBuilder运行的第个类。如果我从IntelliJ运行这个类,它运行得很好,但是如果我通过ProcessBuilder运行它,它会给出上面的错误

package Server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerProgram
{
    private final static int port = 8888;

    private static final Market market = new Market();

    public static void main(String[] args)
    {

        RunServer();
    }

    private static void RunServer() {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(port);
            System.out.println("Waiting for incoming connections...");
            while (true) {
                Socket socket = serverSocket.accept();
                new Thread(new Server.ClientHandler(socket, market)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

共 (0) 个答案