【问题标题】:No main class found?没有找到主类?
【发布时间】:2013-03-18 11:20:28
【问题描述】:

我必须为我的大学创建一个简单的聊天,当我尝试在 NetBeans 上运行它时,它显示:“未找到主要课程”。我不明白,我相信我确实有一个主要课程,所以谁能告诉我问题出在哪里?代码如下:

import java.io.* ;
import java.net.*;

public class server {
    private static ServerSocket socketservidor = null;
    private static Socket socketcliente = null;
    private static final int maxclientes = 4;
    private static final clienteThread[] hilos = new clienteThread[maxclientes];

    public static void main(String args[]) {
        int puerto = 2222;
        if (args.length < 1) {
            System.out.println("CONEXION REALIZADA CORRECTAMENTE \n"
                    + "CHAT INICIADO CORRECTAMENTE \n" + "NUM. PUERTO="
                    + puerto);
        } else {
            puerto = Integer.valueOf(args[0]).intValue();
        }

        try {
            socketservidor = new ServerSocket(puerto);
        } catch (IOException e) {
            System.out.println(e);
        }

        while (true) {
            try {
                socketcliente = socketservidor.accept();
                int i = 0;
                for (i = 0; i < maxclientes; i++) {
                    if (hilos[i] == null) {
                        (hilos[i] = new clienteThread(socketcliente, hilos))
                                .start();
                        break;
                    }
                }
                if (i == maxclientes) {
                    PrintStream oc = new PrintStream(
                            socketcliente.getOutputStream());
                    oc.println("Servidor ocupado. Vuelve a intentar más tarde");
                    oc.close();
                    socketcliente.close();
                }
            } catch (IOException e) {
                System.out.println(e);
            }
        }
    }
}

class clienteThread extends Thread {

    private PrintStream salida = null;
    private DataInputStream entrada = null;
    private int maxclientes;
    private final clienteThread[] threads;
    private Socket socketcliente = null;

    public clienteThread(Socket socketcliente, clienteThread[] threads) {
        this.socketcliente = socketcliente;
        this.threads = threads;
        maxclientes = threads.length;
    }

    public void run() {
        int maxclientes = this.maxclientes;
        clienteThread[] threads = this.threads;

        try {
            entrada = new DataInputStream(socketcliente.getInputStream());
            salida = new PrintStream(socketcliente.getOutputStream());
            salida.println("Solo nos falta saber tu nombre para empezar:");
            String nombre = entrada.readLine().trim();
            salida.println("Bienvenido a nuestro chat " + nombre + "\n"
                    + "Ya puedes chatear con otros usuarios!" + "\n"
                    + " teclea /salir para abandonar chat");
            for (int i = 0; i < maxclientes; i++) {
                if (threads[i] != null && threads[i] != this) {
                    threads[i].salida.println("***" + nombre
                            + " se ha conectado!!!***");
                }
            }
            while (true) {
                String linea = entrada.readLine();
                if (linea.startsWith("/salir")) {
                    break;
                }
                for (int i = 0; i < maxclientes; i++) {
                    if (threads[i] != null && threads[i] != this) {
                        threads[i].salida.println(">>" + nombre + ":" + linea);
                    }
                    if (threads[i] != null && threads[i] == this) {
                        threads[i].salida.println("YO:" + linea);
                    }
                }
            }
            for (int i = 0; i < maxclientes; i++) {
                if (threads[i] != null && threads[i] != this) {
                    threads[i].salida.println("***" + nombre
                            + " se ha desconectado***");
                }
            }
            salida.println("***Te has desconectado del chat***");

            for (int i = 0; i < maxclientes; i++) {
                if (threads[i] == this) {
                    threads[i] = null;
                }
            }
            entrada.close();
            salida.close();
            socketcliente.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}

【问题讨论】:

  • 你试过用更简单的程序重现这个问题吗?
  • 你是如何运行它的?你建立了你的项目了吗?
  • IDE 可能不会自动编译源代码。这可能是您出错的原因。
  • 我认为这甚至不应该编译。您在同一个文件中有两个类,这在 Java 中是不允许的。
  • 您确定 Netbeans 知道哪个课程是您的主要课程吗?应该会问,但是如果编译的时候出了问题,根本就没有类。

标签: java multithreading sockets


【解决方案1】:

您的文件名必须与您的 java 类名相同。例如,如果类名是“sever”,那么文件应该称为 server.java。我可以和 eclipse 一起吃午饭。

【讨论】:

  • server 是一个有效的(虽然不是惯用的)类名。
  • 类名不必以大写字母开头,只是首选样式。
  • 如果您的 JAVA_HOME 设置正确,那么您应该能够在使用 java 文件导航到目录后从命令行“javac server.java”开始午餐。这是我在编译此文件后在控制台中得到的:“server.java:40: warning: unmappable character for encoding Cp1257 oc.println("Servidor ocupado.Vuelve a intentar m├?s tarde"); ^ 注意: server.java 使用或覆盖了已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以了解详细信息。1 警告“
【解决方案2】:

试试这个。

右键单击项目文件夹,单击属性,然后从左侧菜单中选择运行。您现在将能够在右侧看到主要课程。单击浏览,然后选择服务器类。然后,当您运行项目时,错误将不存在,您的服务器将开始运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多