2012-09-18 13 views
22

Tôi đã làm các cài đặt sau để chạy một dự án web Java nhưng bằng cách nào đó Tomcat của tôi không được bắt đầu từ Eclipse:Tomcat không bắt đầu (ném java.net.BindException:)

JAVA_HOME : C:\Program Files\Java\jdk1.6.0_03 
PATH : C:\Program Files\Java\jdk1.6.0_03\bin 
CATALINA_HOME : D:\javaworkspaces\apache-tomcat-7.0.27 

Sau đó, khi được yêu cầu, tôi thiết lập một máy chủ mới từ Eclipse và cung cấp đường dẫn cài đặt Tomcat.

Như đã đề cập trong một số diễn đàn, tôi đã thêm tomcat-juli.jar vào đường dẫn lớp học.
Mặc dù tất cả điều này khi tôi cố gắng bắt đầu máy chủ Tomcat, tôi nhận được lỗi như tomcat không nhìn chằm chằm trong 45 giây.

tôi nhận được thông tin đăng nhập sau:

Jul 26, 2012 5:49:34 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: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_03\bin;D:\eclipse-jee-indigo-SR2-win32\eclipse;;. 
Jul 26, 2012 5:49:34 PM org.apache.tomcat.util.digester.SetPropertiesRule 
begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property   'source' to 'org.eclipse.jst.j2ee.server:JEE_Day01' did not find a matching property. 
Jul 26, 2012 5:49:34 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-80"] 
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Jul 26, 2012 5:49:35 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:393) 
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566) 
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417) 
at org.apache.catalina.connector.Connector.initInternal(Connector.java:956) 
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:624) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:649) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) 
Caused by: java.net.BindException: Address already in use: JVM_Bind 
at java.net.PlainSocketImpl.socketBind(Native Method) 
at java.net.PlainSocketImpl.bind(Unknown Source) 
at java.net.ServerSocket.bind(Unknown Source) 
at java.net.ServerSocket.<init>(Unknown Source) 
at java.net.ServerSocket.<init>(Unknown Source) 
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49) 
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:380) 
... 16 more 
Jul 26, 2012 5:49:35 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:624) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:649) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) 
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed 
at org.apache.catalina.connector.Connector.initInternal(Connector.java:958) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
... 12 more 

Tôi đã gọi nhiều diễn đàn nhưng đang nặng mắc kẹt với tình hình. Xin vui lòng hướng dẫn cho tôi.

Trả lời

22

những dòng này:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"] 
java.net.BindException: Address already in use: JVM_Bind <null>:8009 

ngụ ý rằng đã có một dịch vụ đang chạy trên cổng 8009. có một tomcat (với ajp) đang chạy chưa?

nếu dịch vụ chạy trên 8009 là cần thiết bạn có thể thay đổi cấu hình kết nối trong server.xml một cái gì đó như dưới đây:

<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" /> 
+0

thanx ..đã làm việc – user1649415

10

Nó nói số cổng 8009 đã chiếm đóng một số quá trình khác đang chạy trên hệ điều hành của bạn try searching for that process and stop it hoặc làm tomcat của bạn để chạy trên khác nhau cổng (miễn phí)

+0

thanx một tấn..lần cuối cùng hoạt động – user1649415

5

java.net.BindException: Địa chỉ đã được sử dụng: JVM_Bind: 8009

Điều này có nghĩa là một số quy trình khác đã sử dụng cổng này. Nó có thể là một cá thể Tomcat khác không?

0

Hãy thử: http: // localhost: 8089 nếu không hoạt động (hoặc) Hãy thử cách này: Đặt: JRE_HOME: C: \ Program Files \ Java \ jre1.5.0_11 (phụ thuộc vào phiên bản JRE của bạn) và thêm C: \ Program Files \ Java \ jre1.5.0_11 (phụ thuộc vào phiên bản JRE của bạn) \ bin vào đường dẫn Eclipse-> đi đến các cửa sổ ưu tiên: server-> RuntimeEnvironment remove thêm Server và Referesh và thêm TomcatServer mới

0

TIL: Một người nào khác trên máy chủ có thể khởi động IIS trên cổng 80 và không nói cho ai biết.
Nếu bạn có cấu hình tomcat cho cùng một cổng, nó cũng sẽ báo cáo lỗi này.
Cổng trên IIS hoặc tomcat sẽ cần được thay đổi.

Để sửa đổi cổng trong IIS:
Công cụ quản trị | Trình quản lý Dịch vụ Thông tin Internet (IIS)
Nhấp chuột phải vào Trang Web Mặc định | Sửa Bindings ... Cảng Thay đổi

-HOẶC-

Để sửa đổi các cảng trong Tomcat:
mở conf \ server.xml và cập nhật giá trị cổng trong thẻ:

<Connector port="80" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    URIEncoding="UTF-8"/> 

Khởi động lại Tomcat

Thưởng thức 2 dịch vụ web.

6

giết (nghe) quá trình tương ứng trên cổng này ví dụ: 8009. sử dụng

netstat -a -o -n

để tìm PID của tiến trình. Nó có thể trông giống như thế này TCP [::]: 8009 [::]: 0 LISTENING 892

sử dụng lệnh taskkill để hủy quá trình. dụ:

taskkill /F /PID 892

+0

để hủy quá trình, bạn có thể cần quyền quản trị. Để làm như vậy, hãy tìm "cmd" trong hộp tìm kiếm bắt đầu của Windows, nhấp chuột phải vào "cmd.exe" và chọn "open as administrator" –

0

Something khác đang sử dụng cổng 8009.

Hoặc tắt điều đó là sử dụng 8009 hoặc thay đổi server.xml của bạn để sử dụng một cổng hơn 8009

0

Điều này thường xảy ra nếu cổng Kết nối/tắt máy của tomcat đã được sử dụng. Trước tiên, chạy shutdown.bat (Đôi khi chúng ta bỏ lỡ ra rằng một ví dụ của tomcat vẫn đang chạy) nhắc Tiếp theo, trong lệnh chạy

netstat -aon | findstr 0.0:<your port number which is giving bind exception> 

Để có được PID của ứng dụng hiện đang sử dụng của bạn Hải cảng. Hoặc là giết ứng dụng hay sử dụng một số cảng khác mà không được liệt kê khi bạn chạy

netstat -a -o -n 
2

Bạn không cần phải thay đổi server.port để khắc phục vấn đề này ...

Mac/Unix/Linux Người dùng: Nếu sau khi bạn khởi động lại Tomcat, và vấn đề này vẫn tồn tại, có thể là do Tomcat đã tắt không đúng cách và có các tài nguyên vẫn được liên kết với nó đang bị khóa. Bạn có thể xem PID của những nguồn lực bằng cách chạy lệnh này:

lsof | grep tomcat 

Chấm dứt những quá trình sử dụng:

kill -15 <PID> 

này cần khắc phục vấn đề của bạn.

Sử dụng lệnh kill -15 để TERM (-15) quy trình thay vì SIGKILL (-9) là ưu tiên. Chuyển đổi -15 gửi quá trình tín hiệu để bắt đầu các giai đoạn tắt máy và dọn dẹp các tài nguyên bị chặn.