Một số cổng (8005, 8080, 8009) được yêu cầu bởi Tomcat Server tại localhost đã được sử dụng


258

Tôi đang gặp phải lỗi sau khi tôi cố chạy một chương trình JSP đơn giản trên Tomcat trong Eclipse.

Một số cổng (8005, 8080, 8009) được yêu cầu bởi Tomcat v6.0 Server tại localhost đã được sử dụng. Máy chủ có thể đã chạy trong một quy trình khác hoặc một quy trình hệ thống có thể đang sử dụng cổng. Để khởi động máy chủ này, bạn sẽ cần dừng quá trình khác hoặc thay đổi số cổng.

Điều này gây ra như thế nào và làm thế nào tôi có thể giải quyết nó?


Tôi đã có một vấn đề tương tự hóa ra là tường lửa windows.
James Oravec

Có lẽ một số quá trình undead đang giữ cho tomcat của bạn còn sống. giết quá trình bằng cách tìm ID của nó và chấm dứt nó hoặc bằng cách khởi động lại máy của bạn.
Felipe Leão

bạn có thể sử dụng các lệnh này để dừng các dịch vụ tomcat đã chạy từ bảng điều khiển lệnh. netstat -ano | findStr 8080để tìm các dịch vụ đang chạy và sau đó tìm id tiến trình và sao chép pid và chạy lại lệnh nhưtaskkill /F /PID pid_number
Mdhar9e

Câu trả lời:


473

Bạn đã có một phiên bản khác của Tomcat đã chạy. Bạn có thể xác nhận điều này bằng cách truy cập http://localhost:8080vào webbrowser của mình và kiểm tra xem bạn có nhận được trang chủ mặc định Tomcat hoặc trang lỗi 404 dành riêng cho Tomcat không. Cả hai đều là bằng chứng hợp lệ như nhau rằng Tomcat chạy tốt; nếu không, thì bạn đã nhận được thông báo lỗi hết thời gian kết nối HTTP cụ thể của trình duyệt.

Bạn cần phải tắt nó. Chuyển đến /binthư mục con của thư mục cài đặt Tomcat và thực thi tập lệnh shutdown.bat(Windows) hoặc shutdown.sh(Unix). Nếu vô ích, hãy đóng Eclipse và sau đó mở trình quản lý tác vụ và hủy tất cả javavà / hoặc javawcác quy trình.

Hoặc nếu bạn thực sự cài đặt nó như một dịch vụ Windows vì một số lý do (điều này cụ thể là dành cho sản xuất và không có ích khi bạn mới phát triển), hãy mở trình quản lý dịch vụ ( Bắt đầu> Chạy> services.msc ) và dừng dịch vụ Tomcat. Nếu cần, hãy gỡ cài đặt dịch vụ Windows hoàn toàn. Để phát triển, chỉ cần tệp ZIP là đủ.

Hoặc nếu mục đích thực tế của bạn là chạy hai phiên bản Tomcat cùng một lúc, thì bạn phải định cấu hình phiên bản thứ hai để nghe trên các cổng khác nhau. Tham khảo tài liệu Tomcat để biết thêm chi tiết.


1
hoàn hảo, điều này đã làm tôi khó chịu Tôi đã thực thi nó như sh shutdown.shtrong terminal trong thư mục / bin.
Daniel Englander

2
Xin chào BalusC, tôi thích bạn! Không có shutdown.battrong thư mục bin của tôi. Tomcat đã được cài đặt như một dịch vụ và không phải là một zip. Dừng dịch vụ tomcat trong các dịch vụ đã khắc phục sự cố. Cảm ơn. Chenqui.
Erran Morad

1
@Borat: Bạn được chào đón. Hãy nhớ rằng bạn thực sự tốt hơn nên gỡ cài đặt dịch vụ và nhận zip thay thế.
BalusC

6
"Giết tất cả các quá trình java và / hoặc javaw" làm việc cho tôi, cảm ơn.
Thariq Nugrohotomo

3
Mở system monitorhoặc task managervà giết một quá trình java đang sử dụng about 400 MBhoặc nhiều hơn RAMcũng sẽ giải quyết vấn đề. Nó vô tình bảo lưu quá trình.
viper

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • không cần khởi động lại Eclipse
  • Nếu bạn gặp lỗi trên, chỉ cần nhập dòng này vào terminal
  • một lần nữa bắt đầu tomcat trong Eclipse.
  • chỉ hoạt động trong hệ thống dựa trên Linux (Ubuntu ..etc)

6
Điều này tốt hơnkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

Điều này không làm việc cho tôi (Mint 17.1). Nó chỉ cho tôi sự giúp đỡ cho killlệnh.
Deleet

Điều này làm việc cho tôi. Tuy nhiên tôi muốn biết nếu tôi có 2 trường hợp đang chạy và tôi phải buộc dừng một bằng cách sử dụng phương thức này, làm thế nào để tôi biết nên tắt cái nào. Cảm ơn
Gautam

29

Nếu bạn đang chạy trên windows, hãy thử điều này trong dấu nhắc dòng lệnh:

netstat -ano

Điều này sẽ hiển thị tất cả các cổng đang sử dụng và quy trình id id # của quy trình đang sử dụng cổng đó. Sau đó Ctrl+ Alt+ Delvà mở Trình quản lý tác vụ để xem quy trình đó là gì.

Sau đó, bạn có thể chọn đóng / dừng nó hoặc định cấu hình máy chủ của mình để sử dụng cổng khác. Để kiểm tra xem cổng chọn mới (giả sử 8010) có sẵn không, hãy làm điều này:

netstat -ano | grep 8010

Nếu nó không trả về bất kỳ dòng nào thì bạn vẫn ổn.

Để thay đổi cổng, hãy chuyển đến dạng xem Máy chủ, mở server.xml và thay đổi cổng ở đó. Của tôi có mục này:

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

Vui lòng xem câu trả lời mới của tôi trong đó tôi bao gồm tập lệnh PowerShell để tự động hóa việc này mà không yêu cầu bạn mở Trình quản lý tác vụ.
Xharlie

1
findstrcho những người không có grep.
eckes

25

Nếu bạn đang ở trên môi trường mac, đây là những gì tôi đã làm.

Tìm id tiến trình đang chạy trên cổng này từ thiết bị đầu cuối, ví dụ: 8080:

lsof -i :8080

và giết nó:

kill -9 <PID>  

Thí dụ:

Bạn có thể thấy kết quả sau:

MacSys:bin krunal.$ lsof -i :8080

COMMAND   PID     USER   FD   TYPE     DEVICE  SIZE/OFF   NODE  NAME
java     21347   krunal  52u  IPv6      XXX      0t0      TCP  *:http-xxx (LISTEN)

và giết nó: ( kill -9 21347)


20

Các bước tới cổng miễn phí đã được sử dụng để chạy máy chủ tomcat trong Eclipse

Ví dụ: giả sử cổng 8080 được sử dụng, chúng ta cần tạo 8080 miễn phí để chạy tomcat

Bước 1:

C: \ Người dùng \ tên người dùng> netstat -o -n -a | tìm 0,0: 8080

TCP 0.0.0.0:3000 0.0.0.0 0 LISTENING 3116

Bây giờ, chúng ta có thể thấy rằng cổng LISTENING là 3116 cho 8080,

Chúng ta cần phải giết 3116 ngay bây giờ

Bước 2:-

C: \ Users \ tên người dùng> taskkill / F / PID 3116

Bước 3: Truy cập Eclipse và khởi động Máy chủ, nó sẽ chạy


14

Nếu bạn sử dụng Eclipse thì nhấp đúp chuột vào máy chủ và nhấp đúp chuột vào máy chủ tomcat thì một tệp sẽ mở ra. Trong tệp đó thay đổi cổng HTTP thành một số số cổng khác và lưu ( Ctrl+ S) sau đó khởi động lại máy chủ.


Điều này làm việc cho tôi trong khi các giải pháp khác thì không. Tôi đang sử dụng Mint 17.1. Tôi đã phải cài đặt tomcat cả thông qua Eclipse và thông qua apt-get vì tôi không thể tìm thấy thư mục nơi apt-get đã cài đặt nó. Vì vậy, đó có lẽ là lý do tại sao tôi có hai. Tuy nhiên, tôi không thể đóng cái đầu tiên bằng lệnh kill.
Deleet

12

Nếu Eclipse nói

Một số cổng (8005, 8080, 8009) được yêu cầu bởi Máy chủ Tomcat v6.0 tại localhost đã được sử dụng

Lỗi này xuất hiện do tomcat có thể đang chạy ở chế độ nền nên trước tiên hãy dừng máy chủ đó..theo dõi các chi tiết bên dưới.

Giải pháp là:

  1. Mở chế độ xem "bảng điều khiển" (cửa sổ-> hiển thị chế độ xem-> Bảng điều khiển)
  2. Sau đó dừng máy chủ tomcat.
  3. Sau đó mở giao diện "máy chủ" và khởi động máy chủ, nó sẽ hoạt động.

Cảm ơn!


Điều này làm việc cho tôi. Tôi chỉ thử: dịch vụ sudo tomcat dừng
Emiliano Sangoi

10

Tôi không có ví dụ nào khác về Tomcat chạy quảng cáo, không có quy trình nào khác sử dụng "cổng Tomcat" (trong trường hợp của tôi là cổng 8088). Eclipse gửi cùng một thông điệp khi bắt đầu Tomcat:

.... Máy chủ có thể đã chạy trong một quy trình khác hoặc quy trình hệ thống có thể đang sử dụng cổng. Để khởi động máy chủ này, bạn sẽ cần dừng quá trình khác hoặc thay đổi số cổng.

Tôi giải quyết vấn đề theo cách này:

  • nhắc đến bin của tomcat
  • khởi động startup.bat
  • khởi động shutdown.bat
  • bắt đầu tomcat bởi Eclipse

1
Vấn đề của tôi là các cổng 8005 và 8009 đang bận, tuy nhiên cổng 8080 là miễn phí và không có cài đặt tomcat nào đang chạy vào thời điểm đó. Giải pháp của bạn đã giúp tôi khắc phục vấn đề này, cảm ơn.
Benas 6/2/2015

7

Những gì tôi đã làm sau khi đọc tất cả các câu trả lời được đề xuất và như tôi biết cổng của tôi đã được sử dụng. Tôi nhấp đúp chuột vào Tomcat dưới tab Máy chủ trong nhật thực và nó mở thông tin tổng quan và sau đó tìm thông tin cổng. Chỉ thay đổi cổng xung đột vì cổng của tôi là cổng 8009 (lỗi được đề cập trong khi khởi động máy chủ). Tôi đã thay đổi nó thành 8008 và nó hoạt động tốt. Hãy thử nếu cổng thay đổi sẽ không được sử dụng, máy chủ sẽ bắt đầu.


6

Bước 1: netstat -a -o -n và nó sẽ hiển thị danh sách mạng, tìm kiếm địa chỉ cục bộ như 127.0.0.1:8080 và lưu ý PID (eq 3624)

C:\>netstat -a -o -n

Bước2: tác vụ / F / PID 3624 . Chạy lệnh này để giết quá trình đó.

C:\>taskkill /F /PID 3624

liên kết đến bài viết


Vui lòng xem câu trả lời mới của tôi trong đó tôi bao gồm tập lệnh PowerShell để tự động hóa hai dòng này.
Xharlie

5

Trên Windows sử dụng lệnh để dừng phiên bản tomcat đã chạy và thử chạy lại trong nhật thực, nó có thể hoạt động.

net stop tomcat7 

Hoặc bạn có thể thay đổi cổng trong XML của máy chủ nếu bạn chỉ muốn chạy trên một số cổng khác.


4

Cách dễ dàng để giải quyết vấn đề của bạn:

Máy chủ có thể đã chạy trong một quy trình khác hoặc một quy trình hệ thống có thể đang sử dụng cổng. Để giết cổng đó, hãy làm như sau:

1) Tải xuống TCPView (chỉ 285kb) từ liên kết sau.

http://technet.microsoft.com/en-in/sysiternals/bb897437.aspx

2) Trích xuất thư mục và khởi động ứng dụng TCPView .

3) Nhấp chuột phải vào java.exe (vì các cổng 8009.8005 thường được sử dụng bởi quy trình java) và chọn tùy chọn Kết thúc quá trình .

điều này sẽ dừng quá trình khác một cách dễ dàng ..

LƯU Ý : Chạy TOMCATPATH ​​/ bin / shutdown.bat không được tắt Tomcat khi nó chứa một số chủ đề quỷ hoặc không được quản lý. Trong những trường hợp như vậy, TCPView hoạt động tốt mà không có vấn đề gì.


2

Nếu bạn đang ở trong tương lai Java EE trong Eclipse và cố gắng khởi động Máy chủ Tomcat trong Eclipse ở chế độ gỡ lỗi, thì bạn sẽ gặp các lỗi như vậy. Bạn phải chuyển sang gỡ lỗi tiềm năng trong Eclipse. Tôi đã giải quyết vấn đề của tôi như thế này.


2

Đôi khi, nếu các cổng không được giải phóng ngay cả sau khi thử tắt máy. Những gì @BalusC đề xuất, bạn có thể giết quá trình javaw. Thực hiện các bước sau:

  1. Nhấp vào Start Menu và mở "Windows powershell"
  2. Nhấp chuột phải trước khi mở và chọn "Chạy với tư cách quản trị viên"
  3. Nhập lệnh ps. Bạn có thể thấy một hình ảnh như sau: Powershell hiển thị các proesses hiện đang chạy

  4. Xem số quy trình của quy trình "javaw". Số quy trình là số ngoài cùng bên phải trong các cột, tôi đã nhấn mạnh trong số quy trình hình ảnh của javaw chẳng hạn.

  5. Nhập lệnh kill. javaw bị giết và bây giờ bạn phải có thể chạy chương trình.


1
Vui lòng xem câu trả lời mới của tôi trong đó tôi bao gồm tập lệnh PowerShell để tự động hóa việc này.
Xharlie

2

Đây là một lựa chọn nữa để thử nếu không có nỗ lực nào ở trên giúp được. Bạn có thể đang sử dụng Eclipse từ Ổ đĩa chung (ví dụ: H :) . Nếu vậy, di chuyển / sao chép toàn bộ thư mục Eclipse sang C: và thử lại.

Eclipse của tôi không thể mở các cổng cho máy chủ Tomcat (với lỗi trên), thậm chí không kết nối được với internet. Tôi cũng đã thử một plugin Tomcat khác (Sysdeo) không thể mở các cổng.

Đây là những lựa chọn tôi đã thử:

Kiểm tra và tiêu diệt các trường hợp Tomcat khác

  • Trong dấu nhắc lệnh netstat -anovà kiểm tra xem có bất kỳ quy trình nào khác đang sử dụng các cổng bị xung đột không.
  • Tìm PID và giết nó
  • Hãy thử khởi động lại máy chủ.

Thay đổi cổng Tomcat trong Eclipse

  • Trong tab Máy chủ Eclipse, bấm đúp vào cá thể Tomcat. Điều này sẽ mở tab cấu hình.
  • Trong Cổng, thay đổi số cổng. (ví dụ: 18080).

Giết java.exe và javaw

Xem câu trả lời khác của tôi cho Eclipse không kết nối với Internet ( https://stackoverflow.com/a/37246087/4212710 ).


2

Đối với người dùng windows:

Chuyển đến Trình quản lý tác vụ trực tiếp với tổ hợp phím CTRL + SHIFT + ESC.

Giết các quá trình "java.exe" bằng cách nhấp chuột phải và chọn "Kết thúc tác vụ".


2

Tôi đã kiểm tra tất cả các câu trả lời nhưng informing only to kill PID.

Trong trường hợp nếu bạn có quyền truy cập đầu cuối được chia sẻ bởi tất cả thì điều đó sẽ không giúp ích hoặc có thể bạn không có quyền giết chết PID .

Trong trường hợp này, những gì bạn có thể làm là:

Double click on server

Go to Overview and change ports in Ports như thế này:

nhập mô tả hình ảnh ở đây


1

Cách khắc phục đơn giản hơn đối với tôi là xóa các ứng dụng web được triển khai hiện tại khỏi tomcat thông qua tab "Máy chủ". Một khi tôi loại bỏ chúng, vấn đề sẽ biến mất. Chỉ cần triển khai lại dự án của bạn bằng cách vào Run As> Run trên Server.


1

Vấn đề thường phát sinh khi Apache Tomcat không chấm dứt, đúng cách, ngay cả khi một lệnh tắt được gửi. Trong trường hợp của tôi, sử dụng Tomcat 8, điều này xảy ra với sự đều đặn khó chịu. May mắn thay, bạn có thể sử dụng Windows PowerShell và netstatlệnh để tạo một tập lệnh đơn giản để giết tiến trình.

Tập lệnh PowerShell sau đây sẽ phân tích đầu ra netstatđể tìm bất kỳ quy trình nào đang nghe 127.0.0.1:8005, trích xuất PID của nó và sau đó hủy quy trình đó:

netstat -a -o -n `
 | select -skip 4 `
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
 | ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
 | % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }

Nếu server.xmlcấu hình Tomcat của bạn để sử dụng một cổng hoặc IP khác, hãy chỉnh sửa biểu thức chính quy trên dòng thứ tư của tập lệnh tương ứng.

Cuối cùng, tôi nên chỉ ra rằng tình hình trên Linux tốt hơn vì bạn có thể hướng dẫn Tomcat lưu tệp PID của nó vào một tệp khi khởi động và sử dụng một công tắc để buộc tắt máy, sau đó - tập lệnh tắt cho các hệ thống 'nix đã có tính năng khả năng giết quá trình và công việc sleuth netstatkhông cần thiết.


1

Nếu sự cố trên xảy ra trong HĐH dựa trên Windows 7 hoặc 10, sự cố xảy ra do Tomcat đang chạy dưới dạng Windows Service. Để ngăn Tomcat chạy dưới dạng Windows Services, hãy mở Bảng điều khiển Windows. Tìm dịch vụ "Apache Tomcat" và dừng nó. Một cách khác là giết tiến trình đang chạy trên cổng 8080 bằng cmd.

Mở cmd chạy nó với tư cách quản trị viên.

  1. C: \ users \ tên người dùng> netstat -o -n -a | findstr 0.0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0 0 LISTENING 2160.
  3. 2160 ở trên là id tiến trình của quá trình đang chạy trên cổng 8080 và giết tiến trình đó bằng lệnh sau
    C: \ users \ username> taskkill / F / PID 2160
  4. Đi đến IDE và khởi động Máy chủ, nó sẽ chạy

1

Có thể là do bạn không dừng dịch vụ tomcat của mình đúng cách. Để làm điều đó, Mở trình quản lý tác vụ của bạn ở đó bạn có thể thấy một javaw.exedịch vụ. Đầu tiên dừng dịch vụ đó. Bây giờ khởi động lại tomcat của bạn nó hoạt động tốt.


1

Trong trường hợp của tôi, nó đã báo lỗi cho tôi: Cổng 8005 được yêu cầu bởi Tomcat v8.0 Server tại localhost đã được sử dụng

Tôi đã thay đổi cổng 8005 trong apache-tomcat-8.0.39 \ conf \ server.xml nhưng các thay đổi không được phản ánh. Sau đó, tôi đã làm những thay đổi từ nhật thực. bằng cách nhấp đúp vào máy chủ và sửa đổi cổng từ 8005 đến 8006 và nó hoạt động. nhập mô tả hình ảnh ở đây

Trước khi đặt 8006 tôi đã kiểm tra trong shell windows nếu cổng này có sẵn hay không. Bằng cách thực hiện lệnh sau:

netstat -a -o -n | findstr 8006

1

Tôi gặp phải vấn đề tương tự và sau khi tìm kiếm câu trả lời như hình dưới đây: 1. mở Monitor Tomcat như hình bên dưới: nhập mô tả hình ảnh ở đây

  1. Đơn giản chỉ cần nhấn dừng như thể hiện trong hình dưới đây:

nhập mô tả hình ảnh ở đây

Cuối cùng nó hoạt động với tôi sau nhiều thử nghiệm và đề xuất giải pháp.

Trân trọng, Kerelos Mikhail


0

Trên Eclipse thực hiện xóa thô thư mục cấu hình Tomcat trong dự án "Máy chủ". Tôi đã thử nó như hy vọng cuối cùng và nó đã làm việc.


0

Trong trường hợp có cửa sổ, tôi đã trải nghiệm một công cụ mới ... việc dừng tomcat từ thư mục / bin sẽ ngay lập tức không phát hành cổng 8080. Mất khoảng 5-10 phút để phát hành cổng. Sau 10 phút nữa nếu tôi cố chạy dự án của mình Chạy-> Chạy trên máy chủ .. nó cho phép chạy.

Tôi không chắc liệu sự hiểu biết của tôi có đúng không!


0

Tham khảo blog sau "cách giết tomcat mà không phải khởi động lại máy tính của bạn"

http://stanicblog.blogspot.fr/2012/01/how-to-kill-apache-tomcat-without.html

Hy vọng điều này sẽ giúp được ai đó trong tương lai.


1
Các liên kết ở trên là chết. Đây là một điểm đến bài viết blog tốt: stanicblog.blogspot.fr/2012/01/...
dounyy

Vui lòng không thêm liên kết để đọc mà không đề cập đến phần quan trọng. Bởi vì mọi người đang ở đây nhận được câu trả lời.
Menuka Ishan

0

Nó xảy ra khi những người khác trong dự án cũng đang sử dụng cùng số cổng như bạn đang sử dụng! nhấp đúp chuột vào máy chủ tomcat, thay đổi số cổng thành bất cứ thứ gì 8585 hoặc bất cứ thứ gì. Mã bây giờ sẽ bắt đầu chạy!


0

Cách diệt dịch vụ windows bằng cách sử dụng PID -

  1. mở dấu nhắc lệnh và gõ netstat -ano
  2. tìm PID của các cổng đang được sử dụng, trong trường hợp này, nó sẽ là 8080, 8005.8009. Giả sử PID của các cổng này là 5760.
  3. Bây giờ gõ taskkill /f /pid 5760
  4. nó sẽ đóng PID và các cổng sẽ có sẵn để sử dụng. Bây giờ bạn có thể bắt đầu tomcat như bình thường bằng các dịch vụ Windows hoặc bằng chính nhật thực.

Cảm ơn

giết một dịch vụ Windows bị kẹt khi dừng hoặc bắt đầu


0

Một số cổng (8005, 8080, 8009) được yêu cầu bởi Tomcat vX.X Server tại localhost đã được sử dụng

Để kiểm tra xem một phiên bản khác của Tomcat đã chạy hay một số quy trình khác đang sử dụng các cổng bạn có thể sử dụng:

netstat -b -atrong dấu nhắc lệnh cho windows. Điều này liệt kê các cổng đang sử dụng và cung cấp cho bạn khả năng thực thi sử dụng từng cổng. Bạn cần phải ở trong nhóm quản trị để làm điều này.

Bạn có thể nhận được một cái gì đó như thế này:

TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

Mở trình quản lý tác vụ Ctrl+ Shift+ Escvà hủy Tomcat7.exehoặc bất kỳ quá trình nào khác sử dụng các cổng này.


Vui lòng xem câu trả lời mới của tôi trong đó tôi bao gồm tập lệnh PowerShell để tự động hóa việc này.
Xharlie

0

Tomcat của bạn có thể đang chạy. Đó là lý do tại sao bạn có một lỗi. Tôi đã có cùng một vấn đề trước đây. Tôi đã giải quyết nó rất đơn giản:

  1. Khởi động lại máy tính của bạn
  2. Mở Eclipse
  3. Chạy Tomcat của bạn

Đó là tất cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.