Java编译和运行命令行中包含2个类的程序

Java编译和运行命令行中包含2个类的程序,java,compiler-errors,compilation,Java,Compiler Errors,Compilation,我有两个文件要编译: Client.java和 ClientHandler.java 我必须在脚本中编译和运行它们。这是我到目前为止编写的编译脚本: del src\pack\*.class set path="C:\Program Files\Java\jdk1.8.0_144\bin" javac ClientHandler.java javac Client.java pause Client偶尔会创建ClientHandler对象,命令行在该行抛出错误 C:\Users\maksg\D

我有两个文件要编译:
Client.java
ClientHandler.java

我必须在脚本中编译和运行它们。这是我到目前为止编写的编译脚本:

del src\pack\*.class
set path="C:\Program Files\Java\jdk1.8.0_144\bin"
javac ClientHandler.java
javac Client.java
pause
Client
偶尔会创建
ClientHandler
对象,命令行在该行抛出错误

C:\Users\maksg\Desktop\abc>set path="C:\Program Files\Java\jdk1.8.0_144\bin"
C:\Users\maksg\Desktop\abc>javac ClientHandler.java
C:\Users\maksg\Desktop\abc>javac Client.java
Client.java:44: error: cannot find symbol
                                                        Thread ch = new ClientHandler(s, din, dout, gracze);
                                                                        ^
  symbol: class ClientHandler
1 error

C:\Users\maksg\Desktop\abc>pause
这是我运行程序的脚本:

set path="C:\Program Files\Java\jre1.8.0_144\bin"
start java Client gracz1 7000 7000 127.0.0.1
start java Client gracz2 6000 7000 127.0.0.1
start java Client gracz3 8000 6000 127.0.0.1
start java Client gracz4 9000 7000 127.0.0.1
但是,我甚至无法检查运行的脚本是否正确,因为我无法编译这两个文件

以下是两个类的源代码: 客户

a包;
导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.util.HashMap;
公共类客户端扩展线程{
静串纳兹瓦;
静态int-portMoj;
静态int Portinegoklienta;
静态字符串ip;
静态HashMap-gracze;
静态串liczbaPrzeciwnika;
静态int portPrzeciwnika;
静态线程ch;
公共客户端(字符串[]args){
gracze=newhashmap();
nazwa=args[0];
portMoj=Integer.parseInt(args[1]);
portInnegoKlienta=Integer.parseInt(args[2]);
ip=args[3];
}
公共静态void main(字符串[]args){
新客户(args);
线程t=新线程(新的Runnable(){
@凌驾
公开募捐{
试一试{
ServerSocket ServerSocket=新的ServerSocket(portMoj);
while(true){
sockets=serverSocket.accept();
DataInputStream din=新的DataInputStream(s.getInputStream());
DataOutputStream dout=新的DataOutputStream(s.getOutputStream());
螺纹ch=新夹持器(s、din、dout、gracze);
ch.start();
}
}捕获(例外情况除外){
系统输出打印项次(ex);
例如printStackTrace();
}
}
});
t、 start();
试一试{
System.out.println(“乌拉圭货币”+nazwa);
System.out.println(“Moj端口:+args[1]);
System.out.println(“Port klienta wpr.:”+args[2]);
gracze.put(Integer.parseInt(args[1]),nazwa;
套接字=空;
DataInputStream din=null;
DataOutputStream dout=null;
布尔值skanuj=true;
while(skanuj){
试一试{
插座=新插座(ip,PortineGoklienta);
System.out.println(“纳维亚兹瓦尼·波拉琴尼亚z:+portInnegoKlienta”);
din=新的DataInputStream(socket.getInputStream());
dout=新的DataOutputStream(socket.getOutputStream());
skanuj=假;
}
捕获(例外e){
System.out.println(“Polaczenie nieudane,ponawiam Polaczenie”);
试一试{
Thread.sleep(2000);//二氧化碳瑞典克朗
}
捕获(中断异常ie){
即printStackTrace();
}
}
}
System.out.println(“Wysylam join do…:”+portInnegoKlienta);
dout.writeUTF(“加入”+nazwa+“”+portMoj+“”);
dout.flush();
格拉茨·普特(portMoj,nazwa);
插座=新插座(ip,PortineGoklienta);
System.out.println(“纳维亚兹瓦尼·波拉琴尼亚z:+portInnegoKlienta”);
din=新的DataInputStream(socket.getInputStream());
dout=新的DataOutputStream(socket.getOutputStream());
睡眠(1000);
字符串liczbaWylosowana=((int)(Math.random()*10))+“”;
字符串mojPortString=portMoj+“”;
dout.writeUTF(“游戏”+liczbaWylosowana+”+mojPortString);
dout.flush();
插座=新插座(ip,PortineGoklienta);
System.out.println(“纳维亚兹瓦尼·波拉琴尼亚z:+portInnegoKlienta”);
din=新的DataInputStream(socket.getInputStream());
dout=新的DataOutputStream(socket.getOutputStream());
睡眠(1000);
}捕获(例外e){
系统输出打印ln(e);
e、 printStackTrace();
}
}
}
和ClientHandler:

package a;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

class ClientHandler extends Thread{ 

    DataInputStream din; 
    DataOutputStream dout; 
    Socket socket;
    HashMap<Integer, String> gracze;

    public ClientHandler(Socket socket, DataInputStream din, DataOutputStream dout, HashMap<Integer, String> gracze){ 
        this.socket = socket; 
        this.din = din; 
        this.dout = dout;
        this.gracze = gracze;

    } 

    public void run() {
        String[] komunikaty;
        String msgin; 

            try {
                msgin = din.readUTF();
                komunikaty = msgin.split(" ");

                if(komunikaty[0].equals("join")){
                    System.out.println("Uzyskalem komende join");
                    String nazwaPartnera = komunikaty[1];
                    String portPartnera = komunikaty[2];
                    System.out.println("Polaczyl sie ze mną: " + nazwaPartnera
                             + ", na porcie: " + portPartnera);
                    gracze.put(Integer.parseInt(portPartnera), nazwaPartnera);

                    String wszyscyGracze = "aktywni ";
                    Set<Integer> set = gracze.keySet();
                    for(int i: set) {
                        wszyscyGracze += i + " " + gracze.get(i) + " ";
                    }
                    for(int i : set) {
                        Socket s = new Socket(socket.getInetAddress(), i);
                        dout = new DataOutputStream(s.getOutputStream());
                        dout.writeUTF(wszyscyGracze);
                        dout.flush();
                        s.close();
                    }
                }
                if(komunikaty[0].equals("aktywni")) {
                    System.out.println("Uzyskalem komende aktywni");
                    System.out.println("Lista aktywnych graczy: ");
                    gracze.clear();                 
                    for(int i = 1; i < komunikaty.length-1; i+=2) {
                        gracze.put(Integer.parseInt(komunikaty[i]), komunikaty[i+1]);
                    }
                    Set<Integer> set = gracze.keySet();
                    for(int i : set) {
                        System.out.println(i + " " + gracze.get(i));
                    }
                }
                if(komunikaty[0].equals("game")) {
                    System.out.println("Uzyskalem komende game");
                    String liczbaGraczaWyzywajacego = komunikaty[1];
                    int portGraczaWyzywajacego = Integer.parseInt(komunikaty[2]);
                    String nazwaGraczaWyzywajacego = gracze.get(portGraczaWyzywajacego);
                    Set<Integer> set = gracze.keySet();
                    ArrayList<String> rezultatyMeczy = new ArrayList<>();

                    for(int i : set) {                      
                        Socket s = new Socket(socket.getInetAddress(), i);
                        dout = new DataOutputStream(s.getOutputStream());
                        if(!(i == portGraczaWyzywajacego)) {
                            int liczbaPrzeciwnika = (int)(Math.random()*10);
                            if(((Integer.parseInt(liczbaGraczaWyzywajacego)+liczbaPrzeciwnika)%2) == 0) {
                                rezultatyMeczy.add("Wygralem z " + gracze.get(i));
                                dout.writeUTF("challenged " + portGraczaWyzywajacego + " " + nazwaGraczaWyzywajacego + " 0");
                                dout.flush();
                            } else {
                                rezultatyMeczy.add("Przegralem z " + gracze.get(i));
                                dout.writeUTF("challenged " + portGraczaWyzywajacego + " " + nazwaGraczaWyzywajacego + " 1");
                                dout.flush();
                            }
                        }
                        s.close();
                        dout.close();
                    }
                    String wiadomoscZwrotnaDoWyzywajacego = "results ";
                    for(int i = 0; i < rezultatyMeczy.size(); ++i) {
                        wiadomoscZwrotnaDoWyzywajacego += rezultatyMeczy.get(i) + " ";
                    }
                    Socket zwrotny = new Socket(socket.getInetAddress(), portGraczaWyzywajacego);
                    dout = new DataOutputStream(zwrotny.getOutputStream());
                    dout.writeUTF(wiadomoscZwrotnaDoWyzywajacego);
                    dout.flush();
                    zwrotny.close();
                    dout.close();
                }
                if(komunikaty[0].equals("challenged")) {
                    System.out.println("Uzyskalem komende challenged");
                    System.out.println("Zostalem wyzwany przez: " + komunikaty[2]);
                    if(komunikaty[3].equals("0")) {
                        System.out.println("Przegralem");
                    } else {
                        System.out.println("Wygralem");
                    }
                }
                if(komunikaty[0].equals("results")) {
                    System.out.println("Uzyskalem komende results");
                    System.out.println("Moje mecze:");
                    for(int i = 1; i < komunikaty.length-1; i+=3) {
                        System.out.println(komunikaty[i] + " " + komunikaty[i+1] + " " + komunikaty[i+2] + " ");
                    }
                }

                socket.close();
                din.close();
                dout.close();
                msgin = "";
                komunikaty = null;
            } catch (IOException e) { 
                //e.printStackTrace(); 
            } 
   }

}
a包;
导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入java.net.Socket;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Set;
类ClientHandler扩展线程{
数据输入流;
数据输出流dout;
插座;
HashMap-gracze;
公共ClientHandler(套接字套接字、DataInputStream-din、DataOutputStream-dout、HashMap-gracze){
this.socket=socket;
this.din=din;
this.dout=dout;
this.gracze=gracze;
} 
公开募捐{
字符串[]komunikaty;
字符串msgin;
试一试{
msgin=din.readUTF();
komunikaty=msgin.split(“”);
if(komunikaty[0].equals(“join”)){
System.out.println(“Uzyskalem komende join”);
字符串nazwaPartnera=komunikaty[1];
字符串portPartnera=komunikaty[2];
System.out.println(“Polaczyl sie ze mną:”+nazwaPartnera
+,na porcie:“+portPartnera”;
gracze.put(Integer.parseInt(portPartnera),nazwaPartnera);
字符串wszyscyGracze=“aktywni”;
Set=gracze.keySet();
for(int i:set){
wszyscyGracze++=i++“gracze.get(i)+”;
}
package a;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

class ClientHandler extends Thread{ 

    DataInputStream din; 
    DataOutputStream dout; 
    Socket socket;
    HashMap<Integer, String> gracze;

    public ClientHandler(Socket socket, DataInputStream din, DataOutputStream dout, HashMap<Integer, String> gracze){ 
        this.socket = socket; 
        this.din = din; 
        this.dout = dout;
        this.gracze = gracze;

    } 

    public void run() {
        String[] komunikaty;
        String msgin; 

            try {
                msgin = din.readUTF();
                komunikaty = msgin.split(" ");

                if(komunikaty[0].equals("join")){
                    System.out.println("Uzyskalem komende join");
                    String nazwaPartnera = komunikaty[1];
                    String portPartnera = komunikaty[2];
                    System.out.println("Polaczyl sie ze mną: " + nazwaPartnera
                             + ", na porcie: " + portPartnera);
                    gracze.put(Integer.parseInt(portPartnera), nazwaPartnera);

                    String wszyscyGracze = "aktywni ";
                    Set<Integer> set = gracze.keySet();
                    for(int i: set) {
                        wszyscyGracze += i + " " + gracze.get(i) + " ";
                    }
                    for(int i : set) {
                        Socket s = new Socket(socket.getInetAddress(), i);
                        dout = new DataOutputStream(s.getOutputStream());
                        dout.writeUTF(wszyscyGracze);
                        dout.flush();
                        s.close();
                    }
                }
                if(komunikaty[0].equals("aktywni")) {
                    System.out.println("Uzyskalem komende aktywni");
                    System.out.println("Lista aktywnych graczy: ");
                    gracze.clear();                 
                    for(int i = 1; i < komunikaty.length-1; i+=2) {
                        gracze.put(Integer.parseInt(komunikaty[i]), komunikaty[i+1]);
                    }
                    Set<Integer> set = gracze.keySet();
                    for(int i : set) {
                        System.out.println(i + " " + gracze.get(i));
                    }
                }
                if(komunikaty[0].equals("game")) {
                    System.out.println("Uzyskalem komende game");
                    String liczbaGraczaWyzywajacego = komunikaty[1];
                    int portGraczaWyzywajacego = Integer.parseInt(komunikaty[2]);
                    String nazwaGraczaWyzywajacego = gracze.get(portGraczaWyzywajacego);
                    Set<Integer> set = gracze.keySet();
                    ArrayList<String> rezultatyMeczy = new ArrayList<>();

                    for(int i : set) {                      
                        Socket s = new Socket(socket.getInetAddress(), i);
                        dout = new DataOutputStream(s.getOutputStream());
                        if(!(i == portGraczaWyzywajacego)) {
                            int liczbaPrzeciwnika = (int)(Math.random()*10);
                            if(((Integer.parseInt(liczbaGraczaWyzywajacego)+liczbaPrzeciwnika)%2) == 0) {
                                rezultatyMeczy.add("Wygralem z " + gracze.get(i));
                                dout.writeUTF("challenged " + portGraczaWyzywajacego + " " + nazwaGraczaWyzywajacego + " 0");
                                dout.flush();
                            } else {
                                rezultatyMeczy.add("Przegralem z " + gracze.get(i));
                                dout.writeUTF("challenged " + portGraczaWyzywajacego + " " + nazwaGraczaWyzywajacego + " 1");
                                dout.flush();
                            }
                        }
                        s.close();
                        dout.close();
                    }
                    String wiadomoscZwrotnaDoWyzywajacego = "results ";
                    for(int i = 0; i < rezultatyMeczy.size(); ++i) {
                        wiadomoscZwrotnaDoWyzywajacego += rezultatyMeczy.get(i) + " ";
                    }
                    Socket zwrotny = new Socket(socket.getInetAddress(), portGraczaWyzywajacego);
                    dout = new DataOutputStream(zwrotny.getOutputStream());
                    dout.writeUTF(wiadomoscZwrotnaDoWyzywajacego);
                    dout.flush();
                    zwrotny.close();
                    dout.close();
                }
                if(komunikaty[0].equals("challenged")) {
                    System.out.println("Uzyskalem komende challenged");
                    System.out.println("Zostalem wyzwany przez: " + komunikaty[2]);
                    if(komunikaty[3].equals("0")) {
                        System.out.println("Przegralem");
                    } else {
                        System.out.println("Wygralem");
                    }
                }
                if(komunikaty[0].equals("results")) {
                    System.out.println("Uzyskalem komende results");
                    System.out.println("Moje mecze:");
                    for(int i = 1; i < komunikaty.length-1; i+=3) {
                        System.out.println(komunikaty[i] + " " + komunikaty[i+1] + " " + komunikaty[i+2] + " ");
                    }
                }

                socket.close();
                din.close();
                dout.close();
                msgin = "";
                komunikaty = null;
            } catch (IOException e) { 
                //e.printStackTrace(); 
            } 
   }

}
package a;