无法使用Eclipse启动Tomcat:“地址已被占用”

7

我无法启动我的Tomcat服务器。我已尝试了几乎所有的方法,但切换位置并不能帮助我解决这个问题,因为我的服务器位置是正确的。我使用的操作系统是Windows 8。

这里是我在控制台上看到的错误信息:

 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:
 C:\Program Files\Java\jdk1.7.0_21\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Users/Krzys/Desktop/eclipse-jee-juno-SR2-win32-x86_64/eclipse/jre/bin/server;C:/Users/Krzys/Desktop/eclipse-jee-juno-SR2-win32-x86_64/eclipse/jre/bin;C:/Users/Krzys/Desktop/eclipse-jee-juno-SR2-win32-x86_64/eclipse/jre/lib/amd64;;C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse;;.
 kwi 23, 2013 3:53:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
 WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting
 property 'source' to 'org.eclipse.jst.jee.server:Lab5' did not find a matching property.
 kwi 23, 2013 3:53:21 PM org.apache.coyote.AbstractProtocol init
 INFO: Initializing ProtocolHandler ["http-bio-8080"]
 kwi 23, 2013 3:53:21 PM org.apache.coyote.AbstractProtocol init
 SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
 java.net.BindException: Address already in use: JVM_Bind <null>:8080
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:429)
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
    ... 17 more

 kwi 23, 2013 3:53:21 PM org.apache.catalina.core.StandardService initInternal
 SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:983)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more
Caused by: java.net.BindException: Address already in use: JVM_Bind <null>:8080
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:429)
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
    ... 13 more
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.(ServerSocket.java:237)
    at java.net.ServerSocket.(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
    ... 17 more

 kwi 23, 2013 3:53:21 PM org.apache.coyote.AbstractProtocol init
 INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
 kwi 23, 2013 3:53:21 PM org.apache.coyote.AbstractProtocol init
 SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
 java.net.BindException: Address already in use: JVM_Bind <null>:8009
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:429)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
 Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.(ServerSocket.java:237)
    at java.net.ServerSocket.(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
    ... 16 more

 kwi 23, 2013 3:53:21 PM org.apache.catalina.core.StandardService initInternal
 SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:983)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more
Caused by: java.net.BindException: Address already in use: JVM_Bind <null>:8009
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:429)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
    ... 13 more
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.(ServerSocket.java:237)
    at java.net.ServerSocket.(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
    ... 16 more

 kwi 23, 2013 3:53:21 PM org.apache.catalina.startup.Catalina load
 INFO: Initialization processed in 1271 ms
 kwi 23, 2013 3:53:21 PM org.apache.catalina.core.StandardService startInternal
 INFO: Starting service Catalina
 kwi 23, 2013 3:53:21 PM org.apache.catalina.core.StandardEngine startInternal
 INFO: Starting Servlet Engine: Apache Tomcat/7.0.39
 kwi 23, 2013 3:53:23 PM org.apache.catalina.startup.HostConfig deployDirectory
 INFO: Deploying web application directory C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse\apache-tomcat-7.0.39\webapps\docs
 kwi 23, 2013 3:53:23 PM org.apache.catalina.startup.HostConfig deployDirectory
 INFO: Deploying web application directory C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse\apache-tomcat-7.0.39\webapps\examples
 kwi 23, 2013 3:53:24 PM org.apache.catalina.core.ApplicationContext log
 INFO: ContextListener: contextInitialized()
 kwi 23, 2013 3:53:24 PM org.apache.catalina.core.ApplicationContext log
 INFO: SessionListener: contextInitialized()
 kwi 23, 2013 3:53:24 PM org.apache.catalina.core.ApplicationContext log
 INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@737d54dd')
 kwi 23, 2013 3:53:24 PM org.apache.catalina.startup.HostConfig deployDirectory
 INFO: Deploying web application directory C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse\apache-tomcat-7.0.39\webapps\host-manager
 kwi 23, 2013 3:53:24 PM org.apache.catalina.startup.HostConfig deployDirectory
 INFO: Deploying web application directory C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse\apache-tomcat-7.0.39\webapps\manager
 kwi 23, 2013 3:53:24 PM org.apache.catalina.startup.HostConfig deployDirectory
 INFO: Deploying web application directory C:\Users\Krzys\Desktop\eclipse-jee-juno-SR2-win32-x86_64\eclipse\apache-tomcat-7.0.39\webapps\ROOT
 kwi 23, 2013 3:53:24 PM org.apache.catalina.startup.Catalina start
 INFO: Server startup in 3028 ms kwi 23, 2013 3:53:24 PM
 org.apache.catalina.core.StandardServer await
 SEVERE: StandardServer.await: create[localhost:8080]:
 java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:427)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:766)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:712)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["http-bio-8080"] kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["ajp-bio-8009"] kwi 23, 2013 3:53:24 PM org.apache.catalina.core.StandardService stopInternal INFO: Stopping service Catalina kwi 23, 2013 3:53:24 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextDestroyed() kwi 23, 2013 3:53:24 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextDestroyed() kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol stop INFO: Stopping ProtocolHandler ["http-bio-8080"] kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol destroy INFO: Destroying ProtocolHandler ["http-bio-8080"] kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol stop INFO: Stopping ProtocolHandler ["ajp-bio-8009"] kwi 23, 2013 3:53:24 PM org.apache.coyote.AbstractProtocol destroy INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

停止Tomcat后,控制台会显示以下错误:

 kwi 23, 2013 4:27:38 PM org.apache.catalina.startup.Catalina stopServer
 SEVERE: Catalina.stop:
 java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:499)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:371)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:458)

你在停止Tomcat时看到的其他错误已经有人回答过了 - 请参见https://dev59.com/Vm7Xa4cB1Zd3GeqPv_ky。 - andyb
6个回答

12

默认情况下,Tomcat 配置在端口 8080 启动,但你的机器上已经有应用程序绑定了该端口。这很可能是另一个 Tomcat Web 服务器实例。

日志中 JVM_Bind :8080 的错误表示你的机器已经有一个服务监听端口 8080。可以使用命令行工具 netstat 或图形化工具 TCP View 找到并关闭它,然后重新启动 Tomcat。这样应该能够解决此错误。

或者,在 Eclipse 中配置 Tomcat 在不同的端口启动,方法是双击 Servers 标签中的 Tomcat vx.x Server at localhost 行,并将窗口右侧显示的 所有 端口改为其他值。


好的,开始了。我把一个简单的“Hello world”例子复制到了Eclipse中。但它仍然显示“HTTP状态404”。我从昨天开始就在与它斗争。我确定代码是好的,因为我在学校里开始它并且它可以工作。 - cris135
在Eclipse的“模块”页面中检查路径(双击“服务器”选项卡中的“Tomcat vx.x Server at localhost”行,并查看主窗口上是否有另一个“页面”)。Eclipse习惯将Web应用程序映射到上下文名称,例如http://localhost:8080/helloworld/,而您可能希望将其映射到Eclipse中的“/”以允许您键入http://localhost:8080/ - andyb
它仍然不起作用并不是很有用。_到底哪里出了问题?_实际上,这个问题已经得到了回答,因为Tomcat现在在Eclipse下已经启动了。最新的问题可能只是Tomcat的错误配置。我建议您提一个新的问题,包括具体的代码和详细的信息,包括Tomcat日志和您正在尝试遵循的任何教程的链接。 - andyb
1
@user2071550 常见问题是当Tomcat配置为绑定在8080端口(默认配置)时运行Skype。快速解决方法:如果您正在运行Skype,请停止它,启动Tomcat,然后再次启动Skype。长期解决方法:重新配置Tomcat和Skype。 - 1ac0

3

只需简单地更改所有端口,例如:Tomcat管理端口、Http/1.1和Ajp/1.3

示例: Tomcat管理员端口: 将8005更改为8004, Http/1.1: 将8080更改为8081, Ajp/1.3: 将8009更改为8008。

enter image description here


2

我和你遇到了相同的问题,我在重启我的电脑后解决了这个问题。希望对你有所帮助。


0

它说端口号8009已被运行在您的操作系统上的其他进程占用。

如果需要运行在8009端口上的服务,您可以将server.xml中的连接器配置更改为以下内容:

Connector port="8089" protocol="AJP/1.3" redirectPort="8443"


0
如果您确定正在使用该端口的实例是另一个Tomcat,而您无法关闭它。强制关闭Java运行时可能会有所帮助。

0

简单来说...

首先,打开“服务”(可以在开始菜单中搜索),找到正在运行的Tomcat服务并停止它。

现在重新运行你的项目,希望你不会遇到任何困难。


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