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;