无法从IntelliJ IDEA 12.1.4 Ultimate (Windows 7)启动Apache Tomcat 6。

22
我需要在IntelliJ IDEA中调试Tomcat6的Web应用程序。
当我尝试运行我的Web应用程序时,出现两个错误:
  1. 地址localhost:1099已经在使用中
  2. 无法打开调试器端口:java.net.SocketException
手动启动Apache Tomcat 6服务可以正常工作。
为了能够从Intellij IDEA调试Apache Tomcat 6中的Web应用程序,我该怎么做?
10个回答

34

以下步骤可行:

  1. 打开命令提示符并输入命令netstat -ano
  2. 您将看到一个包含PID在最后一列的活动TCP连接列表
  3. 查看第二列列出的本地地址,找到使用端口号1099的地址即可得到其PID
  4. 现在打开您的任务管理器,点击“进程”选项卡,并使PID列显示[右键单击标题行并选择PID或单击“查看”,然后单击“选择列”并选择PID]
  5. 现在查找我们从第3步获得的PID并结束该进程。

现在您可以放心使用 :)


非常有帮助。节省了很多时间。 - kta

25

我经常面临这个问题,以下是如何解决它:

LINUX

打开一个终端实例。

fuser 1099/tcp

这应该会返回给您一个进程ID。

1099/tcp:            31596

31596是进程ID。现在,您可以使用该进程ID来终止它,或者只需运行以下命令 -

fuser -k 1099/tcp

WINDOWS

打开命令提示符实例。

netstat -aon | find "1099"

这将返回一个进程实例。

输出:

TCP    0.0.0.0:1099       0.0.0.0:0       LISTENING       15776

这里的15776是进程ID。要杀死它,请输入 -

taskkill /F /PID 15776

干杯!


11
您可以在运行/调试配置对话框中更改JMX端口(默认为1099)。只需尝试不同的端口号(例如9099)。

在我的情况下,在Windows上使用1099端口的是SCComm(一个重要的任务)。因此,我不能只是终止该任务。最简单的解决方案是更改JMX端口号,如此所述。 - Don Cheadle

9
如果您之前已经启动并运行了Web应用程序,则可能会在后台运行着一个未正确关闭的旧调试服务器。请参阅此帖子以了解如何查找使用端口1099的进程。如果证明是Java进程,请将其终止。 如何找出Windows上哪个进程正在侦听某个端口? (如果您使用上面链接中建议的GUI软件,则可以标记所有使用端口1099的Java进程,右键单击并按“结束进程”来终止这些进程)。

1
我完全赞同这个答案。通常有一个java.exe进程需要我杀掉,这是之前仍在运行的tomcat进程。杀掉这个进程可以解决问题。 - Noremac
如果您之前已经运行了Web应用程序,则可能会在后台运行未正确关闭的旧调试服务器,这正是我的情况 - 谢谢。 - Vic Torious

2

如前所述,有一个旧的调试服务器在后台运行。

我的解决方案是通过Windows任务管理器关闭留下的Java进程。

请确认您可以在此操作之前关闭此进程!


小心处理这个。你可能会影响到其他正在运行的进程。 - Gi1ber7

1
将您的http端口更改为8080(tomcat的默认端口),将调试端口更改为当前没有任何进程使用的端口。您可以使用大于1024的任何值,但由于您在1099上遇到错误,请尝试使用大于6000的值。
调试器设置可以在这里找到。

安装Tomcat时,我特别输入了端口号,但这些端口号在netstat -A的输出中并不存在。 - Glory to Russia
我该如何更改Tomcat的JMX端口? - Glory to Russia
@DmitriPisarenko 你可以在catalina-tasks.xml中更改端口,请查看此文档 - Srihari
那里提到的一些文件(例如setenv.bat)在我的安装中不存在,可能是因为我将Tomcat安装为Windows服务。 - Glory to Russia
@DmitriPisarenko - 所以您使用的是Windows而不是MAC。然后,请转到安装Tomcat的文件夹并找到名为“tomcat6w.exe”的文件,打开“java”选项卡。在这里,您可以找到一个名为“java options”的文本区域。在此处添加以下行-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n。请确保将“8000”更改为您要调试的任何端口。您需要使用GUI重新启动Tomcat才能使更改生效。 - Srihari
@DmitriPisarenko 尝试将Java选项中的-X指令分别放在两行上。如果您是从IDE内部启动tomcat,请尝试在JVM选项中提供与此处提供的相同选项。 (http://www.jetbrains.com/idea/webhelp/run-debug-configuration-tomcat.html#d298586e381) - Srihari

0

0

对我而言有效的方法是,我假设需要在“服务”[Windows + R >> services.msc]下运行“Apache Tomcat”服务。

我停止了Tomcat服务,然后回到我的Java应用程序,在Intellij中运行它,这样就可以让它运行了。

希望这有所帮助!


0

可能有其他程序或服务器在后台运行。首先关闭在后台运行的其他服务器,然后重新启动您的服务器。


-2

在使用InteliJ时,关闭所有其他不必要的服务器。

我停止了我的WAMP以消除这个错误“端口已经被占用”。


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