Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新运行应用程序总是抛出java.net.BindException,并且必须重新启动服务器_Java_Multithreading_Sockets - Fatal编程技术网

重新运行应用程序总是抛出java.net.BindException,并且必须重新启动服务器

重新运行应用程序总是抛出java.net.BindException,并且必须重新启动服务器,java,multithreading,sockets,Java,Multithreading,Sockets,我创建了一个Java Web应用程序,该应用程序具有一个应用程序侦听器,该侦听器在初始化的上下文上创建线程,该线程创建了一个ServerSocket,该ServerSocket接受循环中的新连接 问题是,每次我重新部署应用程序时,它都会给我java.net.BindException:地址已在使用中(绑定失败)。我已经关闭了ServerSocket,不知道还能做什么。这是我的密码: @Override public void run() { int port = Integer.pars

我创建了一个Java Web应用程序,该应用程序具有一个应用程序侦听器,该侦听器在初始化的上下文上创建线程,该线程创建了一个ServerSocket,该ServerSocket接受循环中的新连接

问题是,每次我重新部署应用程序时,它都会给我java.net.BindException:地址已在使用中(绑定失败)。我已经关闭了ServerSocket,不知道还能做什么。这是我的密码:

@Override
public void run() {
    int port = Integer.parseInt(conf.getConf("port"));

    try (ServerSocket serverSocket = new ServerSocket(port)) {
        while (work) {
                Socket socket = serverSocket.accept();
                System.out.println("User connected!");
                WorkThread workThread = new WorkThread(conf, socket, bpk);
                workThread.start();
            }
        }
    } catch (IOException ex) {
        Logger.getLogger(SocketThread.class.getName()).log(Level.SEVERE, null, ex);
    }
}

提前谢谢你

如果您的服务器应用程序仍在运行(确实如此),则您尚未关闭服务器套接字(它仍在侦听)。我已检查、停止应用程序、取消部署并在我的pc上检查套接字是否仍被Java占用您已关闭
服务器套接字
何处?在一个上下文被破坏的侦听器中?我使用了上面所示的try with resource inside run方法,ServerSocket实现Closeable,所以这应该足够了,对吗?只有当这个线程退出时。你是怎么造成的?并将其从阻塞中取出
accept()