Java中的KnockServer

Java中的KnockServer,java,server,Java,Server,我是java网络方面的新手,我正在尝试用java制作一个名为“无GUI即时消息”的服务器应用程序。所以每当我运行程序时,它都会说 “在类方法中找不到主方法,请将主方法定义为: 公共静态void main(字符串[]args) 或者JavaFX应用程序类必须扩展JavaFX.application.application“-ECLIPSE” 请帮我找出代码中的错误 import java.io.IOException; import java.io.ObjectInputStream; imp

我是java网络方面的新手,我正在尝试用java制作一个名为“无GUI即时消息”的服务器应用程序。所以每当我运行程序时,它都会说 “在类方法中找不到主方法,请将主方法定义为: 公共静态void main(字符串[]args) 或者JavaFX应用程序类必须扩展JavaFX.application.application“-ECLIPSE”

请帮我找出代码中的错误

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//第一个文件//
公共班机{

    public static void main (String[] args) {
    Server s=new Server();
    s.runningserver();

    }
}   
//第二个文件//
公共类服务器{

    private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;

    //wait For Connection,then display connection information
            private void waitforConnection() {
                System.out.println("wait for Someone to Connect.....\n");
                try {
                    connection=server.accept();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    System.out.println("error In Acceptance of Server!!\n...");
                }
            System.out.println(("Connection      Established"+connection.getInetAddress().getHostName()));

            }


            //Setting Up Streams to Get Input and Output

            private void setupStreams(){  
                try {
                    output=new ObjectOutputStream(connection.getOutputStream());
                    output.flush();
                    input=new ObjectInputStream(connection.getInputStream());
                System.out.println("Your Streams are Perfectly Working...");


                } catch (IOException e) {
                    // TODO Auto-generated catch block

                    System.err.println("Error Found! in Streaming Connectionos");
                    e.printStackTrace();
                }
            }

            // While Chatting Method....!!//
                private void whileChatting() throws IOException{
               String Message="You are now Connected!!\n";
               sendMessage(Message);

               //abletoType(true);
               do{
                   try{
                   Message=(String) input.readObject();
                   System.out.println("\n"+Message);
               }       
                catch(ClassNotFoundException e ){
                    System.out.println("wtf---Fuck\n YOu\n Bloody\n HAcker!!!\n");
                }



               }
                  while(!Message.equals("CLIENT--END"));

                    }
                // Closing All Streams and Socket after you are done//
                private void closeCrap(){
                    System.out.println("\nClosing Connection...........Bye Bye\n");
                    //abletoType(false);
                    try {
                        output.close();
                        input.close();
                        connection.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
        System.out.println("Couldn't Close Connections!");
                    }

                }
                //Sending Messages to Client
                private void sendMessage(String message){
                    try {

                        output.writeObject("SERVER--- "+message);

                        output.flush();
            System.out.println("\nServer- "+message);

                    } catch (IOException e) {
                        // TODO Auto-generated catch block




                    e.printStackTrace();
        System.out.println("Dude I cant Send yeaah..");
                    }

                }






    // Setting up the Server

public void runningserver(){
        try {
            server=new ServerSocket(4444,100);
            while(true){try{
                //connect and Have connection
                waitforConnection();
                setupStreams();
                whileChatting();
            }
            finally{
                closeCrap();
            }
            }   
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



        }




    }

主方法必须是类的方法:

import java.net.Socket;

public class Server {

    public static void main (String[] args) {
      Server s=new Server();
      s.runningserver();
    }   

因此,它必须在类声明之后出现。

编辑:这是解决方案,我检查了它,对我来说它工作正常(运行MainClass.java文件!): //MainClass.java文件:

public class MainClass {
    public static void main (String[] args) {
    Server s=new Server();
    s.runningserver();
    } 
}
import java.io.IOException;

import java.io.ObjectInputStream;

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

public class Server {

    private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;

    // wait For Connection,then display connection information
    private void waitforConnection() {
        System.out.println("wait for Someone to Connect.....\n");
        try {
            connection = server.accept();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("error In Acceptance of Server!!\n...");
        }
        System.out.println(("Connection      Established" + connection
                .getInetAddress().getHostName()));

    }

    // Setting Up Streams to Get Input and Output

    private void setupStreams() {
        try {
            output = new ObjectOutputStream(connection.getOutputStream());
            output.flush();
            input = new ObjectInputStream(connection.getInputStream());
            System.out.println("Your Streams are Perfectly Working...");

        } catch (IOException e) {
            // TODO Auto-generated catch block

            System.err.println("Error Found! in Streaming Connectionos");
            e.printStackTrace();
        }
    }

    // While Chatting Method....!!//
    private void whileChatting() throws IOException {
        String Message = "You are now Connected!!\n";
        sendMessage(Message);

        // abletoType(true);
        do {
            try {
                Message = (String) input.readObject();
                System.out.println("\n" + Message);
            } catch (ClassNotFoundException e) {
                System.out.println("wtf---Fuck\n YOu\n Bloody\n HAcker!!!\n");
            }

        } while (!Message.equals("CLIENT--END"));

    }

    // Closing All Streams and Socket after you are done//
    private void closeCrap() {
        System.out.println("\nClosing Connection...........Bye Bye\n");
        // abletoType(false);
        try {
            output.close();
            input.close();
            connection.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("Couldn't Close Connections!");
        }

    }

    // Sending Messages to Client
    private void sendMessage(String message) {
        try {

            output.writeObject("SERVER--- " + message);

            output.flush();
            System.out.println("\nServer- " + message);

        } catch (IOException e) {
            // TODO Auto-generated catch block

            e.printStackTrace();
            System.out.println("Dude I cant Send yeaah..");
        }

    }

    // Setting up the Server

    public void runningserver() {
        try {
            server = new ServerSocket(4444, 100);
            while (true) {
                try {
                    // connect and Have connection
                    waitforConnection();
                    setupStreams();
                    whileChatting();
                } finally {
                    closeCrap();
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
//Server.java文件:

public class MainClass {
    public static void main (String[] args) {
    Server s=new Server();
    s.runningserver();
    } 
}
import java.io.IOException;

import java.io.ObjectInputStream;

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

public class Server {

    private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;

    // wait For Connection,then display connection information
    private void waitforConnection() {
        System.out.println("wait for Someone to Connect.....\n");
        try {
            connection = server.accept();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("error In Acceptance of Server!!\n...");
        }
        System.out.println(("Connection      Established" + connection
                .getInetAddress().getHostName()));

    }

    // Setting Up Streams to Get Input and Output

    private void setupStreams() {
        try {
            output = new ObjectOutputStream(connection.getOutputStream());
            output.flush();
            input = new ObjectInputStream(connection.getInputStream());
            System.out.println("Your Streams are Perfectly Working...");

        } catch (IOException e) {
            // TODO Auto-generated catch block

            System.err.println("Error Found! in Streaming Connectionos");
            e.printStackTrace();
        }
    }

    // While Chatting Method....!!//
    private void whileChatting() throws IOException {
        String Message = "You are now Connected!!\n";
        sendMessage(Message);

        // abletoType(true);
        do {
            try {
                Message = (String) input.readObject();
                System.out.println("\n" + Message);
            } catch (ClassNotFoundException e) {
                System.out.println("wtf---Fuck\n YOu\n Bloody\n HAcker!!!\n");
            }

        } while (!Message.equals("CLIENT--END"));

    }

    // Closing All Streams and Socket after you are done//
    private void closeCrap() {
        System.out.println("\nClosing Connection...........Bye Bye\n");
        // abletoType(false);
        try {
            output.close();
            input.close();
            connection.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("Couldn't Close Connections!");
        }

    }

    // Sending Messages to Client
    private void sendMessage(String message) {
        try {

            output.writeObject("SERVER--- " + message);

            output.flush();
            System.out.println("\nServer- " + message);

        } catch (IOException e) {
            // TODO Auto-generated catch block

            e.printStackTrace();
            System.out.println("Dude I cant Send yeaah..");
        }

    }

    // Setting up the Server

    public void runningserver() {
        try {
            server = new ServerSocket(4444, 100);
            while (true) {
                try {
                    // connect and Have connection
                    waitforConnection();
                    setupStreams();
                    whileChatting();
                } finally {
                    closeCrap();
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
我可以毫无例外地运行它

问题是你的主要方法

public static void main (String[] args) {}
不在你运行它的类中

//separate file A.java
public class A
{}

//separate file B.java
public class B
{
    public static void main (String[] args) {}

}
如果现在运行B,它会工作,因为B.java有一个main方法 找不到主方法。要运行的文件(A、B等必须定义主方法)
如果运行java文件,它将查找主方法(执行的起点).

您要运行哪个类?
Server
main
?@M.Deinum main class。另外,我也尝试了这两个类,但仍然有问题。br甚至可能在同一个文件中有两个公共类吗?您如何编译它?运行它的命令行是什么?错误消息表明您正在尝试运行名为“Methods”的类,而不是“main”或“Server”。您正在运行的命令行是什么?将您的公共类服务器更改为类服务器,这应该可以解决问题。@Jen我也尝试过,但仍然出现相同的错误。:|不,先生,还没有运行。。您应该在ide中检查它。它仍然不工作。只是在我的ide中尝试过,您也应该检查它。并与您共享s、 谢谢--我已经尝试了这段代码,对我来说,应用程序启动时没有错误。尝试复制粘贴这2个文件,看看是否有效。希望这能解决您的问题。