如何关闭和打开JAVA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何关闭和打开JAVA相关的知识,希望对你有一定的参考价值。

如何关闭和打开JAVA

参考技术A this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这句话其实是1.4以后才有的,它代替了以前的WindowListener中的windoClose方法,EXIT_ON_CLOSE的意思是,当前窗口在点击关闭的时候,会关闭主线程,OK?所以你的所有应用都被关闭了
那么.你就不要这么设置,你的窗口在设置的时候写成,DISPOSE_ON_CLOSE就可以了.DIPOSE就是仅仅释放窗体资源,而不会关闭主线程.
这个DISPOSE_ON_CLOSE静态字段的设置,代替你在windoClose写"this.dispose()"

如何从 Mac 上的终端关闭打开的端口?

【中文标题】如何从 Mac 上的终端关闭打开的端口?【英文标题】:How do I close an open port from the terminal on the Mac? 【发布时间】:2012-09-06 00:06:40 【问题描述】:

我从一个 java 类打开端口 #5955 来与客户端通信。完成后如何关闭此端口?还有哪个命令可以告诉我端口是打开还是关闭?

【问题讨论】:

你是如何打开那个端口的?目前尚不清楚您是在谈论打开和关闭 java 应用程序中的端口还是从防火墙中打开和关闭端口。 【参考方案1】:

    找出占用您要释放的端口号(例如,5955)的进程 ID (PID)

    sudo lsof -i :5955
    

    使用其 PID 杀死当前正在使用该端口的进程

    sudo kill -9 PID
    

【讨论】:

发送 -9 不应该是第一次尝试杀死进程,这是一个非常糟糕的习惯。我记得,你应该首先使用kill PID(这意味着-15),然后尝试-2和-1。只有当每个其他选项都不起作用时,-9 才是最后的手段。 确实按照@Meow 的建议在没有任何标志的情况下杀死了 pID,这对我有用【参考方案2】:

要查找进程尝试:

sudo lsof -i :portNumber

使用其 PID 杀死当前正在使用该端口的进程

kill PID

然后检查端口是否关闭。如果没有,请尝试:

kill -9 PID

如果以前的不起作用,我只会执行以下操作

sudo kill -9 PID

为了安全起见。再次取决于您打开端口的方式,这可能无关紧要。

【讨论】:

【参考方案3】:

在 2018 年,这对我使用 MacOS HighSierra 有用:

sudo lsof -nPi :yourPortNumber

然后:

sudo kill -9 yourPIDnumber

【讨论】:

也有助于查看所有监听端口的信息:sudo lsof -nPi | grep LISTEN【参考方案4】:

很简单的找到5900端口:

sudo lsof -i :5900

然后将 59553 视为 PID

sudo kill 59553

【讨论】:

这不会在现有答案中添加任何内容!【参考方案5】:

无论您如何打开端口,都以相同的方式关闭它。例如,如果您创建了一个套接字,将其绑定到端口 0.0.0.0:5955,并调用了监听,则关闭同一个套接字。

你也可以直接杀死打开端口的进程。

如果你想知道哪个进程打开了一个端口,试试这个:

lsof -i :5955

如果你想知道一个端口是否打开,你可以执行相同的 lsof 命令(如果任何进程打开了它,它是打开的;否则,它不是),或者你可以尝试连接它,例如:

nc localhost 5955

如果立即返回没有输出,说明端口没有打开。

值得一提的是,从技术上讲,它不是开放的端口,而是主机:端口的组合。例如,如果您以 10.0.1.2 的身份插入 LAN,则可以将套接字绑定到 127.0.0.1:5955 或 10.0.1.2:5955,其中一个不会影响另一个,或者您可以绑定到 0.0.0.0 :5955 同时处理两者。您可以使用ifconfig 命令查看您计算机的所有 IPv4 和 IPv6 地址。

【讨论】:

【参考方案6】:

一个班轮最好

kill -9 $(lsof -i:PORT -t) 2> /dev/null

示例: 在 mac 上,想清除端口 9604。下面的命令就像一个魅力

 kill -9 $(lsof -i:9604 -t) 2> /dev/null 

【讨论】:

【参考方案7】:

您还可以使用第一个命令来终止拥有特定端口的进程:

sudo netstat -ap | grep :<port_number>

例如,假设这个进程持有端口8000 TCP,然后运行命令:

sudo netstat -ap | grep :8000

会输出进程持有端口8000对应的行,例如:

tcp  0  0 *:8000   *:* LISTEN  4683/procHoldingPort

在这种情况下,procHoldingPort 是打开端口的进程的名称,4683 是它的pid,8000(注意它是 TCP)是它持有的端口号(你希望关闭它)。

然后按照上面的例子杀死进程:

kill  4683

正如其他人在这里提到的,如果这不起作用(您可以尝试使用带有 -9 作为参数的 kill):

kill -9 4683

同样,一般来说,如果可以的话,最好避免发送SIGKILL (-9)。

【讨论】:

【参考方案8】:

我使用lsof结合kill,如上所述;但写了一个快速的小 bash 脚本来自动化这个过程。

使用这个脚本,你可以在任何地方简单地输入killport 3000,它会杀死所有在端口3000上运行的进程。

https://github.com/xtrasimplicity/killport

【讨论】:

你拯救了我的一天。出于某种原因,lsofkill 组合没有返回任何内容,并使我的脚本挂在 macOS Sierra 上。但是killport 就像一个魅力,而且速度更快。谢谢!【参考方案9】:

我为此创建了一个函数。

function free_port() 
    if [ -z $1 ] 
    then
        echo no Port given
    else
        PORT=$1;
        PID=$(sudo lsof -i :$PORT) # store the PID, that is using this port 

        if [ -z $PID ] 
        then
            echo port: $PORT is already free.
        else
            sudo kill -9 $PID # kill the process, which frees the port
            echo port: $PORT is now free.
        fi
    fi


free_port 80 # you need to change this port number

在您的终端中复制并粘贴这段代码应该可以释放您所需的端口。请记住在最后一行更改端口号。

【讨论】:

【参考方案10】:

试试下面,假设运行端口是8000:

free-port()  kill "$(lsof -t -i :8000)"; 

我找到了参考here

【讨论】:

【参考方案11】:

这似乎对我有用。只需将 your_port_number 更改为您要停止的端口号即可。

sudo lsof -t -i tcp:your_port_number | xargs 杀死 -9

【讨论】:

【参考方案12】:

当打开端口的程序退出时,端口会自动关闭。如果你杀死运行这个服务器的 Java 进程,那应该这样做。

【讨论】:

【参考方案13】:

使用命令查找进程 ID

lsof -n -i4TCP:8080 

得到processId后

sudo kill -9 processID

然后提供您的系统密码。

【讨论】:

【参考方案14】:

    首先找出占用了所需端口的Procees id(pid)。(例如5434)

    ps 辅助 | grep 5434

2.杀死那个进程

   kill -9 <pid>

【讨论】:

使用以下命令查找端口sudo lsof -i :5955

以上是关于如何关闭和打开JAVA的主要内容,如果未能解决你的问题,请参考以下文章

java如何关闭当前窗口打开新的窗口

java中文件打开和关闭的问题

JAVA的GUI中如何实现按下某个按钮后关闭当前窗口,打开新的窗口?

Java登录窗口关闭 打开新窗口

Java编程中,要如何实现“打开一个新页面的同时,关闭原先的页面。”

如何关闭 Windows 7 中打开的端口?