【问题标题】:Tomcat starts but home page cannot open with url http://localhost:8080Tomcat 启动但主页无法使用 url http://localhost:8080 打开
【发布时间】:2014-01-28 01:23:21
【问题描述】:

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

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

请帮助我。

【问题讨论】:

  • tomcat控制台有错误吗?
  • 你能把日志贴在这里吗?
  • 你能检查一下tomcat的日志,看看tomcat有没有出错吗?它在 /logs 下。请检查 catalina.out 和 localhost 日志文件是否有任何异常。如果有,请在此处发布。
  • 要检查的地方是 Tomcat 的日志文件。您应该能够在 /{TomcatDirectory}/logs/ 中找到它们。检查 catalina.out 文件,它有时可以为您提供一些见解。
  • 严重:StandardServer.await:create[localhost:8005]:java.net.BindException:无法分配请求的地址:JVM_Bind

标签: java tomcat


【解决方案1】:

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

如果你想改变tomcat的默认端口,进入tomcat文件夹,打开conf文件夹,在里面可以看到server.xml。在该文件中,您可以看到类似 <Connector port= 的内容。更改端口值并启动tomcat。

【讨论】:

  • 如何检查其他应用程序是否正在使用端口 8080?
  • 要检查其他应用程序是否正在使用端口 8080,您可以使用 TCPview。请参阅以下链接supportlife.wordpress.com/2011/03/18/…
  • 为什么不能编辑server.xml?这不是一个合理的限制
  • 我使用的是 windows 7 32 位
  • 因为它位于 Windows 驱动器中。您只需将您的 conf 文件复制到您的桌面。现在编辑。然后重新定位到相同的位置。
【解决方案2】:

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

[~/.]$ netstat -tuplen

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

【讨论】:

  • 我使用的是 windows 7 32 位
【解决方案3】:

您的问题不在于端口 8080,而在于端口 8005。端口8005是Tomcat的关闭端口。

与其试图找出正在使用端口8005 的东西,不如编辑TOMCAT_DIR/conf/server.xml 并将关闭端口更改为8006 可能更容易

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

【讨论】:

  • 感谢您的回复。我正在尝试编辑该 server.xml,但无法保存。请告诉我如何编辑该文件。谢谢。
  • 您可能会发现该文件需要管理员权限才能编辑。右键单击您的编辑器(notepad.exe - 或其他)并选择“以管理员身份运行”。然后文件 > 打开 > server.xml
  • 这对我有用!谢谢。 @WillKeeling,我们为什么要更改关机端口?
  • 这是一个解决方案,如果您收到错误“严重:StandardServer.await:create[localhost:8005]:java.net.BindException:Cannot assign requested address:JVM_Bind”,如 cmets 中所述原帖。
【解决方案4】:

我的问题已经解决了。我得到的日志如下。

严重:StandardServer.await:创建[localhost:8005]: java.net.BindException:无法分配请求的地址:JVM_Bind

当我尝试使用以下命令打开 tomcat 主页时,我的 tomcat 服务器自动停止 网址。

所以我只是在 windows->System32->drivers->etc->host 文件中进行了一些更改。 只保留 127.0.0.1 localhost 并删除所有其他。你的问题将得到解决。 谢谢你们的帮助:D

【讨论】:

    【解决方案5】:

    如果你是通过eclipse启动tomcat,也可以通过不同的方式解决。

    方法一:

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

    方法二:

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

    【讨论】:

    • 这正是我所需要的。谢谢。我确实有一个问题......我必须做这两个步骤?我想知道是否两者都需要......
    • 不...以下一种方法就可以了。
    【解决方案6】:

    如果你启动了你的 tomcat(在 linux 中检查 ps -ef | grep java)并且你看到它打开了端口 8080 或你在 server.xml 中配置的端口(检查 netstat --tcp -na | grep &lt;port number&gt;)但你仍然无法在你的浏览器检查以下内容:

    1. 它可能会启动,但会延迟 3-5 分钟。检查logs/catalina.out。当服务器完全启动时,您应该会看到类似的内容。
      INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 38442 ms
      如果您没有此 INFO 行,您的服务器启动尚未完成。由于负责提供随机会话 ID 的 SecureRandom 类可能会出现此问题,这可能会导致启动过程中出现很大的延迟。 查看更多详细信息和解决方案here
    2. 检查你的防火墙(在linux上iptables -L -n):如果你没有进入暴露的环境,你可以尝试完全重置你的防火墙iptables -F。但是,请注意,这会使您失去保护,因此可能很危险。
    3. 检查您的selinux(如果您使用的是 linux)。

    这些是启动和运行 Apache Tomcat 过程中最容易被遗忘且不明显的一些问题。

    【讨论】:

      【解决方案7】:

      对于 windows 用户,在命令提示符下输入netstat -an以查看正在侦听的端口,这可能会派上用场。

      【讨论】:

        【解决方案8】:

        Mac 用户

        首先尝试:转到活动监视器 -> 搜索 java 并终止实例,然后重新启动服务器并尝试。

        第二次尝试: 检查tomcat日志文件夹下的日志文件是否有任何错误。

        使用以下命令检查终端中的tomcat日志

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

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

        lsof -i :8080 | grep LISTEN
        

        使用下面的命令杀死进程

        sudo kill -9 pid
        

        【讨论】:

          【解决方案9】:

          我正在使用Eclipse Java EE IDE for Web Developers. Version: Oxygen.1a Release (4.7.1a) in Windows 8.1 x64Apache Tomcat 8.5.24(用于测试目的)。

          我的 Tomcat 服务器的端口名称和编号是:

          Tomcat 管理端口:8005 HTTP/1.1 : 8081(我的 Tomcat 监听端口号) AJP/1.3 : 8009

          各位,因为之前 Tomcat 运行良好,而 sometimesstopping tomcat server 之后突然按下下面显示的图像按钮或可能是其他原因。

          Either 他们一直无法start/restart tomcat 并出现以下错误:

          Server Tomcat vX.Y Server at localhost 无法启动。

          or 有时是 Tomcat Server is started 但不是在网络浏览器中显示 Tomcat Homepage,而是抛出客户端异常 HTTP Status 404 – Not Found. 在首选网络浏览器中。

          可能有很多原因,例如定义了错误的Host name,在eclipse 中定义了错误的Tomcat Server Locations,项目JDK/JRE 版本与Tomcat JRE dependent version 不匹配,由于maven.compiler.sourcemaven.compiler.target 版本导致的maven 项目版本不匹配未在属性标签下定义,mismatch version of project facet Dynamic Web Module to 2.5/3.0,有时 Tomcat 服务器在 Windows 服务级别上运行,之前停止的 Tomcat 端口号仍在侦听,processing pid 在 Tomcat 定义的时间跨度中没有被杀死 Timeouts Stop (in seconds): 15(by default)在 eclipse 中,pid 仍在运行,未能在定义的 Start (in seconds): XX 等中启动。

          这里我将给出解决方案,如何检查和杀死正在运行的Tomcat端口号processing pid(注意,你必须注意后效)。

          在 Windows 中,打开命令提示符,然后按照步骤操作(我的 tomcat HTTP 端口是 8081):

          netstat -ano |查找地址:8081
          TCP 0.0.0.0:8081 0.0.0.0:0 监听 2284
          TCP [::]:8081 [::]:0 监听 2284

          如果有任何监听,上面的命令将列出端口监听的详细信息以及最后一行的processing pid(这里的pid是2284)。

          现在杀死正在运行的 pid,例如:

          taskkill /PID 2284 /F
          成功:PID 2284 的进程已终止。

          还说明了上述两个步骤,如下所示:

          现在,解决上述原因后,启动Tomcat Server

          【讨论】:

            【解决方案10】:

            我遇到了同样的问题。我的 tomcat 已启动,但找不到 HTTP 404 页面。但是,在我的情况下,我安装了 tomcat 的树实例。每个实例都包含 conf、temp、work、webapps 和 logs 文件夹。除非我忘记了,否则复制每个 tomcat 的 conf 文件夹下的全局 web.xml。

                e.g: /opt/tomcat/mytomcatInstance/conf/web.xml 
            

            web.xml 部署描述符文件描述了如何在 servlet 容器中部署 Web 应用程序。

            所以即使我的 tomcat 启动了,我的网络应用程序也无法正确部署。

            【讨论】:

              【解决方案11】:

              这些问题可能是由于内存问题而发生的。 java.lang.OutOfMemoryError: Java 堆空间

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

              【讨论】:

                【解决方案12】:

                在 TomcatDirectory/logs/catalina.out 中查找日志。如果日志太长,请删除 catalina.out 文件并重新运行应用程序。

                【讨论】:

                  【解决方案13】:

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

                  2) 输入./catalina.sh start

                  3) 要停止 Tomcat,请从 bin 文件夹中键入 ./catalina.sh stop。出于某种原因,./startup.sh 有时不起作用。

                  【讨论】:

                    【解决方案14】:

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

                    在我的情况下,将其更改为 Tomcat installation 而不是 workspace metadata 对我有用。

                    【讨论】:

                      【解决方案15】:

                      在我的例子中,运行 tomcat 的端口是在 application.properties 文件中定义的 8000,而不是 8080。在我的例子中,它看起来与这里描述的问题相同。把这个留在这里,以防有人有类似的设置和问题! :)

                      【讨论】:

                        猜你喜欢
                        • 2019-12-16
                        • 1970-01-01
                        • 2016-10-05
                        • 1970-01-01
                        • 2011-02-20
                        • 2015-10-17
                        • 1970-01-01
                        • 2020-04-20
                        • 1970-01-01
                        相关资源
                        最近更新 更多