IntelliJ IDEA - 地址localhost:1099已被使用

56

我尝试使用IntelliJ IDEA启动一个Web应用程序,但是出现错误:localhost:1099已被占用

端口1099已被占用

我使用lsof -i:1099和其他相关命令检查了端口1099,所以我非常确定该端口可用。

这是我的运行配置:

配置

我还将JMX端口更改为6666、6667、6668等,但并没有起作用,因此我认为这与端口本身无关。

我很困惑......是否有其他人遇到过这个问题?

感谢任何帮助。


你正在使用哪个操作系统?你可能遇到了SELinux拒绝绑定的问题。 - Matt Clark
"sudo fuser -k 1099/tcp" 每次使用该端口的进程都会被终止,这对我很有效。 - whoopdedoo
在Windows 10上,在各种IDEA版本上遇到了这个问题。 - zlob
1
我在MacOSX中遇到了问题。当我修改/etc/host并添加项目:127.0.0.1 localhost时,它就可以正常工作了。 - yuan wang
这几乎肯定不是 IDEA 或任何其他 IDE 的问题。这是操作系统级别的事情。要么它是操作系统配置问题,要么某个进程已经在使用该端口。 - Stephen C
12个回答

66

因为使用命令提示符很容易处理,您可以执行以下操作。我假设您正在使用Windows

打开CMD并输入以下内容。

netstat -aon | find "1099"
如果一个进程使用了上述端口,它应该返回类似于这样的输出。
TCP    xxx.xx.xx.xx:1099      xx.xx.xx.xxx:443      ESTABLISHED     2222

最后一列的数值 (2222) 是指进程ID (PID)。

按以下方式 终止 它即可。

taskkill /F /PID 2222

现在您可以启动服务器。


10
每次在运行 IntelliJ 和 Tomcat 时我都遇到这个问题,但令人沮丧的是,netstat 永远不会显示正在使用的端口。 - Paul Vincent Craven
netstat -aon | find "1099" 没有打印任何结果。我将端口更改为1098或10100,结果相同 :( - perezmlal
命令的 Powershell 等效命令是 netstat -ano -p TCP | Select-string '1099'。这不是你的错,因为你明确说明了 CMD,但我相信有些人会注意不到 Powershell 和 CMD shell 之间的细微差别而落在答案上。 - Anogoya Dagaate

32

无法通过`netstat -aon`命令找到进程的解决方案

在不同网络中,某些端口可能会被默认保留。因此,如果您无法在netstat -aon命令中找到:1099端口,则需要首先检查您的保留端口。

netsh interface ipv4 show excludedportrange protocol=tcp

端口1099可能会在列表中显示为保留端口。但对于我来说并非如此。不过,我还是决定尝试将其列为例外。成功了!

按照以下步骤操作:

  1. 确保将此文本复制到记事本中,因为您将暂时失去互联网连接。

  2. 以管理员身份打开CMD。

  3. 按顺序逐个输入以下命令以停止网络:

    net stop winnat

    net stop LanmanWorkstation

    net stop WlanSvc

    net stop WwanSvc

  4. 将端口1099从保留列表中排除:

netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=4
  1. 重新启动网络:

    net start winnat

    net start LanmanWorkstation

    net start WlanSvc

    net start WwanSvc

  2. 完成。

临时解决方案。

对于我来说,只需在IntelliJ IDEA中将JMX端口更改为1599也可以解决此问题。


1
终于!!!有一个可行的解决方案……在过去的几个小时里尝试了所有其他建议的解决方案都没有成功。 - Hussein Akar
1
谢谢,伙计。这就是我寻找了几个月的解决方案! - Tharindu Eranga
谢谢你的提示。有时候寻找这些保留端口甚至都不起作用,真是令人难过。我的端口也没有显示在这里。只需在IntelliJ中更改端口即可“解决”问题... - Akito
这是解决方案。显然在我的电脑上,这些端口在一夜之间发生了变化(可能是我的公司...)。已解决。 - fedeb
这应该是被接受的答案,因为我长期以来一直面临这个问题。我过去通常只能关闭我的系统1小时,然后才能运行一些服务。 - inaitgaJ

8

如果您是Windows用户,则以管理员身份打开 cmd 并使用 netstat -aon | find "1099",然后您将得到类似于以下的结果。

  TCP    0.0.0.0:1099           0.0.0.0:0              LISTENING       9960
  TCP    [::]:1099              [::]:0                 LISTENING       9960

在我的情况下,LISTENING端口是9960,你的情况可能不同。因此使用taskkill /F /PID 9960
有关详细信息,请查看此链接:enter image description here

7

在我的情况下

  • netstat命令没有显示该端口上的任何内容
  • tcpview也没有显示任何内容。

解决方法是:

net stop winnat

net start winnat

正如David在这里发布的那样。


谢谢。这是最快的解决方案。 - jmoran

7

cmd command netstat-ano: cmd command tasklist:

  1. The first step, the command prompt, execute the command:

    netstat –ano
    

    Visible, port 1099 process PID is 6072.

  2. The second step, the command prompt, execute the command:

    tasklist
    
  3. The third step, the task manager, the termination of the process java.exe

    We will see the opening of the 2 java.exe, to end it all.

  4. The fourth step, restart tomcat, can be started


5

实际上,这可能是由于我的hosts文件引起的。

我猜测这与localhost的配置有关:我不小心删除了ipv6关于localhost的配置,

因此解决方案是在hosts文件中添加一行::1 localhost,然后一切都正常运行!


在我的OSX上也遇到了同样的问题,解决方法是同样编辑/etc/hosts文件。但在我的情况下,我已经有了“::1 localhost”的项目。我还有其他几个项目,删除与localhost无关的所有内容后问题得到解决。 - Sérgio Lopes

4
今天我遇到了同样的问题。 尝试在终端中使用

ps -C java -o pid

这将给你一个正在运行的程序列表。对于我来说,我有一个已经在后台运行的Java程序,所以我使用了

pkill java

然后重新启动您的IntelliJ即可。


1
我执行了 ps -fea | grep java 命令,并将 pid 与实际运行的进程进行了比较,然后只关闭了服务器 (weblogic),这就解决了问题。 - Icarin

2
如果您正在使用 Mac 并且端口完全空闲,您可以检查您的主机,并添加 127.0.0.1 localhost 如果不存在的话。

1
感谢 Dulith De Costa,完美的回答。
netstat -aon | find "1099"
taskkill /F /PID "进程ID"
现在您可以启动您的服务器。

1
尝试从操作系统管理器中终止所有Java任务,可能会有一些幽灵进程在运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接