Tomcat启动但无法通过http://localhost:8080的URL打开主页。

39

我是Java的新手,正在尝试开发Web应用程序。我使用的是Windows 7 32位操作系统。我已经安装了Java 7,并设置了路径和类路径。之后我安装了Tomcat 7。

当我尝试使用URL localhost:8080 打开Tomcat主页时,它无法打开,并自动停止了。

请帮助我。


Tomcat控制台有没有任何错误? - A Paul
你能把日志粘贴在这里吗? - Saif Asif
1
请问您能否检查一下Tomcat日志以确定是否有Tomcat遇到任何错误?该日志位于<TOMCAT_DIR>/logs目录下。请检查catalina.out和localhost日志文件是否存在异常,并在此处发布它们。 - Praba
一个检查的地方可能是Tomcat的日志文件。你应该能够在/{TomcatDirectory}/logs/中找到它们。检查catalina.out文件,它有时可以给你一些见解。 - Russell Shingleton
严重错误:StandardServer.await: create[localhost:8005]: java.net.BindException: Cannot assign requested address: JVM_Bind - Aniket Joshi
显示剩余6条评论
15个回答

19

在启动 Tomcat 之前,请确保没有其他应用程序使用端口 8080。如果这不是问题,请粘贴 Tomcat 日志。

如果您想更改 Tomcat 的默认端口,请转到 Tomcat 文件夹并打开 conf 文件夹,在其中您可以看到 server.xml。在该文件中,您可以看到类似于 <Connector port= 的内容。更改端口值并启动Tomcat即可。


4
我该如何检查其他应用程序是否正在使用端口8080? - Aniket Joshi
1
要检查另一个应用程序是否正在使用端口8080,您可以使用TCPview。请参见以下链接http://supportlife.wordpress.com/2011/03/18/tcpview-identify-and-close-open-connections-on-your-windows-machine/。 - Pracede
1
为什么不能编辑server.xml文件?这不是一个合理的限制。 - NickJ
因为它位于Windows驱动器中,所以您只需将配置文件复制到桌面上。现在进行编辑,然后重新定位到相同的位置。 - San Ka Ran
如果另一个端口正在使用8080,则Tomcat将无法启动。会出现绑定错误...因此,这实际上不能作为OP的问题的答案....尽管如果有人因为意外留下了进程而无法启动tomcat,这通常是答案。 - Brad Ellis
显示剩余2条评论

15

如果通过Eclipse启动Tomcat,则也可以通过不同方式解决。

方法1:

  1. 右键单击服务器-> 属性
  2. 单击切换位置并应用。

输入图像描述

输入图像描述 方法2:

  1. 在Eclipse中双击服务器。
  2. 将服务器位置更改为使用Tomcat安装(接管Tomcat安装)。

3
这正是我需要的。谢谢。不过我有一个问题……我需要做这两个步骤吗?我想知道是否都是必需的…… - Nirmal
一种方法即可。 - robinrjoe

9

你遇到的问题不是关于端口 8080,而是关于端口 8005。端口 8005 是 Tomcat 的关闭端口。

与其试图找出使用了端口 8005 的进程,不如直接编辑 TOMCAT_DIR/conf/server.xml 并将关闭端口更改为 8006

<Server port="8006" shutdown="SHUTDOWN">

谢谢您的回复。我正在尝试编辑那个server.xml文件,但是我无法保存。您能告诉我如何编辑该文件吗?谢谢。 - Aniket Joshi
你可能会发现需要管理员权限才能编辑该文件。右键单击你的编辑器(例如notepad.exe),然后选择“以管理员身份运行”。接着,点击“文件”>“打开”>“server.xml”。 - Will Keeling
这对我有用!谢谢。@WillKeeling,我们为什么要更改关闭端口? - Pooja
如果您在原始帖子的评论中看到“SEVERE: StandardServer.await: create[localhost:8005]: java.net.BindException: Cannot assign requested address: JVM_Bind”错误,则可以尝试解决此问题。 - ap-osd

3
如果您正在使用Eclipse启动服务器,请检查所使用的服务器位置和部署路径:

tomcat server location and deploy path

在我的情况下,将此更改为Tomcat安装而不是工作区元数据对我有用。

2

对于Windows用户,可以在命令提示符中键入netstat -an以查看正在侦听的端口,这可能会很有用。


2

1)使用终端(在Linux上),进入apache-tomcat-directory/bin文件夹。

2)键入./catalina.sh start

3)要停止Tomcat,请从bin文件夹中键入./catalina.sh stop。由于某些原因,有时./startup.sh无法正常工作。


2

对于基于Unix的系统,您可以通过在终端中输入以下命令来检查特定应用程序使用的端口:

[~/.]$ netstat -tuplen

您将获得当前由其各自的进程ID持有和使用的所有端口列表。


我正在使用32位的Windows 7操作系统。 - Aniket Joshi

1

针对Mac用户

第一种尝试:进入活动监视器 -> 搜索Java并终止实例,然后重新启动服务器并尝试。

第二种尝试:检查Tomcat日志文件夹中的任何错误日志。

使用以下命令在终端中检查Tomcat日志:

tail -f {tomcatpath}/logs/catalina.out

第三步:检查节点或其他应用程序是否使用相同的端口。使用以下命令检查哪个应用程序正在侦听特定端口。您将看到第二列中带有pid的应用程序列表。

lsof -i :8080 | grep LISTEN

使用以下命令杀死进程

sudo kill -9 pid

0
如果您已经启动了Tomcat(在Linux上,请使用ps -ef | grep java命令检查),并且您看到它打开了端口8080或您在server.xml中配置的端口(请使用netstat --tcp -na | grep <port number>命令检查),但是您仍然无法在浏览器中访问它,请检查以下内容:
  1. 可能会启动,但需要3-5分钟的延迟。检查 logs/catalina.out 文件。当服务器完全启动时,您应该看到类似以下内容的信息:
    INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 38442 ms
    如果您没有看到这个 INFO 行,那么您的服务器启动还没有完成。问题可能是由于 SecureRandom 类负责提供随机会话 ID,而在启动过程中可能会导致大的延迟。 请查看更多详细信息和解决方案here
  2. 检查您的防火墙(在 Linux 上使用命令 iptables -L -n):如果您不处于公开环境中,可以尝试完全重置防火墙(使用命令 iptables -F)。但是,请注意,这将使您失去保护,因此可能存在危险。
  3. 检查您的 selinux(如果您正在使用 Linux)。

这些是让 Apache Tomcat 运行起来最容易被忽视和不明显的问题之一。


0

问题可能是由于内存问题引起的。 java.lang.OutOfMemoryError: Java堆空间

请验证日志文件,查看与硬件(内存)相关的任何问题。


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