【问题标题】:Tomcat fails to start in Eclipse - java.net.BindException: Address already in useTomcat 无法在 Eclipse 中启动 - java.net.BindException:地址已在使用中
【发布时间】:2012-03-09 21:01:26
【问题描述】:

我是 Tomcat 和 Eclipse 的新手,但几天来一直在寻找解决方案。我已经安装了 Tomcat v7.0 并且可以从终端启动/停止它,但是我无法从 Eclipse 中让它工作。我正在关注http://www.vogella.de/articles/EclipseWTP/article.html#jspservlets 上的教程,但是当我尝试运行我的 servlet 时,我收到警告:“本地主机上的服务器 Tomcat v7.0 服务器无法启动”,控制台输出为:

Feb 18, 2012 7:05:54 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Feb 18, 2012 7:05:54 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:de.vogella.wtp.filecounter' did not find a matching property.
Feb 18, 2012 7:05:54 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Feb 18, 2012 7:05:54 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2012 7:05:54 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1046 ms
Feb 18, 2012 7:05:54 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 18, 2012 7:05:54 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.25
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2012 7:05:55 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 654 ms
Feb 18, 2012 7:05:55 PM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[localhost:8005]: 
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:422)
at org.apache.catalina.startup.Catalina.await(Catalina.java:728)
at org.apache.catalina.startup.Catalina.start(Catalina.java:674)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2012 7:05:55 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Feb 18, 2012 7:05:55 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

在我尝试运行 Tomcat 之前,netstat 没有显示正在使用的端口 8080、8005 或 8009,所以这似乎不是问题。知道出了什么问题吗?

【问题讨论】:

    标签: java eclipse tomcat


    【解决方案1】:

    似乎在您安装 Tomcat 时 - 它决定在服务模式下运行,并且必须在您启动系统时运行。因此,当您通过 eclipse 启动 tomcat 时出现错误。在 server.xml 中使用其他端口可能无法解决您的问题。我的猜测是另一个 tomcat 实例已经在运行。您可以在开始之前检查另一个 tomcat 实例的任务管理器是否正在运行它来自日食? 你也可以发布 netstat run 的结果吗?

    【讨论】:

    • 感谢您的回复。我认为你是对的——可能有另一个我不认识的实例正在运行。我重新启动了我的系统,Eclipse 能够启动 Tomcat(信息:服务器在 484 毫秒内启动。)不幸的是,Tomcat 本身现在给我一个 HTTP 404 错误:“请求的资源 /de.vogella.wtp.filecounter/servlet/de .vogella.wtp.filecounter.servlets.FileCounter 不可用。”
    • 另外几个小时的挖掘和cse.csusb.edu/turner/java_web_programming/servlets 的详尽教程的帮助修复了 404。我只需要更正我的 xml 文件中的 行。
    【解决方案2】:

    第 1 步:转到 C:\Windows\System32\drivers\etc

    第 2 步:

    找到hosts文件并用记事本以管理员模式打开

    第 3 步:

    将本地主机ip替换为127.0.0.1

    例子

    # Copyright (c) 1993-2009 Microsoft Corp.
    #
    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
    #
    # This file contains the mappings of IP addresses to host names. Each
    # entry should be kept on an individual line. The IP address should
    # be placed in the first column followed by the corresponding host name.
    # The IP address and the host name should be separated by at least one
    # space.
    #
    # Additionally, comments (such as these) may be inserted on individual
    # lines or following the machine name denoted by a '#' symbol.
    #
    # For example:
    #
    #      102.54.94.97     rhino.acme.com          # source server
    #       38.25.63.10     x.acme.com              # x client host
    
    # localhost name resolution is handled within DNS itself.
        127.0.0.1       localhost
    #   ::1             localhost
    

    第四步:

    保存该文件并运行服务器

    【讨论】:

      【解决方案3】:

      更改 Tomcat 端口设置:

      Tomcat 似乎已经集成在 Eclipse 中了。所以在你的 Eclipse 中应该有一个名为“Servers”的项目,你可以找到你的 Tomcat 配置节点。更改server.xml 中的端口属性。当然,插件提供了很多与Tomcat集成的方式,但基本思路是改server.xml

      【讨论】:

        猜你喜欢
        • 2012-12-25
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2015-10-30
        相关资源
        最近更新 更多