Beberapa port (8005, 8080, 8009) yang diperlukan oleh Tomcat Server di localhost sudah digunakan


258

Saya mendapatkan kesalahan berikut ketika saya mencoba menjalankan program JSP sederhana di Tomcat di Eclipse.

Beberapa port (8005, 8080, 8009) yang diperlukan oleh Tomcat v6.0 Server di localhost sudah digunakan. Server mungkin sudah berjalan di proses lain, atau proses sistem mungkin menggunakan port. Untuk memulai server ini, Anda harus menghentikan proses lainnya atau mengubah nomor port.

Bagaimana ini disebabkan dan bagaimana saya bisa menyelesaikannya?


Saya memiliki masalah serupa yang ternyata adalah windows firewall.
James Oravec

Mungkin beberapa proses mayat hidup menjaga kucing jantan Anda tetap hidup. matikan proses dengan menemukan ID-nya dan menghentikannya atau dengan menyalakan kembali mesin Anda.
Felipe Leão

Anda dapat menggunakan perintah ini untuk menghentikan layanan kucing jantan yang sudah berjalan dari konsol perintah. netstat -ano | findStr 8080untuk menemukan layanan yang berjalan dan kemudian menemukan proses id dan salin pid dan jalankan perintah lagi sebagaitaskkill /F /PID pid_number
Mdhar9e

Jawaban:


473

Anda memiliki instance lain dari Tomcat yang sudah berjalan. Anda dapat mengkonfirmasi ini dengan masuk ke http://localhost:8080dalam browser web Anda dan memeriksa apakah Anda mendapatkan halaman utama Tomcat default atau halaman kesalahan 404 spesifik Tomcat. Keduanya sama-sama bukti yang sah bahwa Tomcat berfungsi dengan baik; jika tidak, maka Anda akan mendapatkan pesan kesalahan waktu tunggu koneksi HTTP khusus browser.

Anda harus mematikannya. Pergi ke /binsubfolder dari folder instalasi Tomcat dan jalankan skrip shutdown.bat(Windows) atau shutdown.sh(Unix). Jika sia-sia, tutup Eclipse dan kemudian buka task manager dan bunuh semua javadan / atau javawproses.

Atau jika Anda benar-benar menginstalnya sebagai layanan Windows untuk beberapa alasan (ini dimaksudkan untuk produksi dan tidak membantu ketika Anda baru saja mengembangkan), buka manajer layanan ( Mulai> Jalankan> services.msc ) dan hentikan layanan Tomcat. Jika perlu, hapus instalasi layanan Windows sama sekali. Untuk pengembangan, cukup file ZIP yang memadai.

Atau jika maksud Anda sebenarnya adalah menjalankan dua instance Tomcat secara bersamaan, maka Anda harus mengonfigurasi instance kedua untuk mendengarkan pada port yang berbeda. Baca dokumentasi Tomcat untuk lebih detail.


1
sempurna, ini telah mengganggu saya selamanya. Saya menjalankannya seperti sh shutdown.shdi terminal dalam direktori / bin.
Danny Englander

2
Halo BalusC, aku menyukaimu! Tidak ada shutdown.batdi folder bin saya. Tomcat dipasang sebagai layanan dan bukan sebagai zip. Menghentikan layanan kucing jantan dalam layanan memperbaiki masalah. Terima kasih. Chenqui.
Erran Morad

1
@ Borat: Sama-sama. Ingatlah bahwa Anda sebaiknya mencopot pemasangan layanan dan mendapatkan zipnya.
BalusC

6
"Bunuh semua proses java dan / atau javaw" bekerja untuk saya, terima kasih.
Thariq Nugrohotomo

3
Membuka system monitoratau task managermematikan proses java yang menggunakan about 400 MBatau lebih RAMjuga akan menyelesaikan masalah. Itu tanpa sadar memesan proses.
viper

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • tidak perlu memulai ulang Eclipse
  • jika Anda mendapatkan kesalahan di atas, cukup masukkan baris ini di terminal
  • mulai lagi tomcat di Eclipse.
  • hanya bekerja di sistem berbasis Linux (Ubuntu ..etc)

6
Ini lebih baikkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

Ini tidak bekerja untuk saya (Mint 17.1). Itu hanya memberi saya bantuan untuk killperintah.
Menghapus

Ini berhasil untuk saya. Namun saya ingin tahu jika saya memiliki 2 instance yang berjalan dan saya harus memaksa menghentikan satu menggunakan metode ini, bagaimana cara mencari tahu yang harus ditutup. Terima kasih
Gautam

29

Jika Anda menjalankan di windows coba ini di prompt baris perintah:

netstat -ano

Ini akan menampilkan semua port yang digunakan dan ID proses PID # dari proses yang menggunakan port itu. Kemudian Ctrl+ Alt+ Deldan buka Task Manager untuk melihat proses apa yang dimaksud.

Anda kemudian dapat memilih untuk menutup / menghentikannya atau mengkonfigurasi server Anda untuk menggunakan port lain. Untuk memeriksa apakah port yang dipilih baru (katakanlah 8010) tersedia lakukan ini:

netstat -ano | grep 8010

Jika tidak mengembalikan garis apa pun maka Anda baik-baik saja.

Untuk mengubah port pergi ke tampilan Server, buka server.xml dan ubah port di sana. Milik saya memiliki entri ini:

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

Silakan lihat jawaban baru saya di mana saya menyertakan skrip PowerShell untuk mengotomatiskan ini tanpa mengharuskan Anda membuka Task Manager.
Xharlie

1
findstrbagi yang tanpa grep.
eckes

25

Jika Anda berada di lingkungan mac, inilah yang saya lakukan.

Temukan id proses yang berjalan pada port ini dari terminal, misalnya, 8080:

lsof -i :8080

dan bunuh itu:

kill -9 <PID>  

Contoh:

Anda dapat melihat hasil berikut:

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)

dan bunuh itu: ( kill -9 21347)


20

Langkah-langkah untuk membebaskan port yang sudah digunakan untuk menjalankan tomcat server di Eclipse

Sebagai contoh, misalkan port 8080 digunakan, kita perlu membuat 8080 gratis untuk menjalankan kucing jantan

Langkah 1:

C: \ Users \ username> netstat -o -n -a | findstr 0.0: 8080

TCP 0.0.0.0:3000 0.0.0.0.00 MENDENGARKAN 3116

Sekarang, kita dapat melihat bahwa MENDENGARKAN port 3116 untuk 8080,

Kita harus membunuh 3116 sekarang

Langkah 2:-

C: \ Users \ username> taskkill / F / PID 3116

Langkah 3: Pergi ke Eclipse dan mulai Server, itu akan berjalan


14

Jika Anda menggunakan Eclipse maka klik dua kali pada server dan klik dua kali pada server kucing jantan maka satu file akan terbuka. Dalam file itu, ubah port HTTP ke beberapa nomor port lain dan simpan ( Ctrl+ S) lalu mulai lagi server.


Ini bekerja untuk saya sedangkan solusi lain tidak. Saya menggunakan Mint 17.1. Saya harus menginstal tomcat melalui Eclipse dan melalui apt-get karena saya tidak dapat menemukan folder tempat apt-get memasangnya. Jadi itu mungkin mengapa saya punya dua. Tetap saja saya tidak bisa menutup yang pertama dengan perintah kill.
Menghapus

12

Jika Eclipse berkata

Beberapa port (8005, 8080, 8009) yang diperlukan oleh Tomcat v6.0 Server di localhost sudah digunakan

Kesalahan ini terjadi karena kucing jantan mungkin berjalan di latar belakang, jadi hentikan dulu server itu .. ikuti detail di bawah ini.

Solusinya adalah:

  1. Buka tampilan "konsol" (window-> show view-> Console)
  2. Kemudian hentikan server kucing jantan.
  3. Kemudian buka tampilan "server" dan mulai server itu akan berfungsi.

Terima kasih!


Ini berhasil untuk saya. Saya hanya mencoba: sudo service tomcat stop
Emiliano Sangoi

10

Saya tidak memiliki instance lain dari Tomcat yang menjalankan iklan, tidak ada proses lain menggunakan "Tomcat port" (dalam kasus saya, port 8088). Eclipse mengirim pesan yang sama saat memulai Tomcat:

.... Server mungkin sudah berjalan di proses lain, atau proses sistem mungkin menggunakan port. Untuk memulai server ini, Anda harus menghentikan proses lainnya atau mengubah nomor port.

Saya memecahkan masalah dengan cara ini:

  • buka bin tomcat dengan cepat
  • luncurkan startup.bat
  • luncurkan shutdown.bat
  • mulai tomcat oleh Eclipse

1
Masalah saya adalah bahwa port 8005 dan 8009 sedang sibuk, namun port 8080 gratis dan tidak ada instalasi kucing jantan yang sedang berjalan saat itu. Solusi Anda membantu saya memperbaiki masalah ini, terima kasih.
Benas

7

Apa yang saya lakukan setelah membaca semua jawaban yang disarankan dan karena saya tahu port saya sudah digunakan. Saya mengklik dua kali pada Tomcat di bawah tab Server di gerhana dan itu membuka informasi ikhtisar dan kemudian menemukan informasi port. Baru saja mengubah port yang konflik karena port saya adalah port 8009 (kesalahan disebutkan saat memulai server). Saya telah mengubahnya ke 8008 dan berfungsi dengan baik. Cobalah jika port yang diubah tidak akan digunakan server akan mulai.


6

Langkah 1: netstat -a -o -n dan itu akan memunculkan daftar jaringan, cari alamat lokal seperti 127.0.0.1:8080 dan catat PID (mis. 3624)

C:\>netstat -a -o -n

Langkah2: taskkill / F / PID 3624 . Jalankan perintah ini untuk mematikan proses itu.

C:\>taskkill /F /PID 3624

tautan ke pos


Silakan lihat jawaban baru saya di mana saya menyertakan skrip PowerShell untuk mengotomatisasi dua baris ini.
Xharlie

5

Pada Windows gunakan perintah untuk menghentikan instance tomcat yang sudah berjalan dan coba jalankan lagi di gerhana, mungkin berhasil.

net stop tomcat7 

Atau Anda dapat mengubah port di XML server jika Anda hanya ingin menjalankan beberapa port lain.


4

Cara mudah untuk menyelesaikan masalah Anda:

Server mungkin sudah berjalan di proses lain, atau proses sistem mungkin menggunakan port. Untuk membunuh port itu, lakukan hal berikut:

1) Unduh TCPView (hanya 285kb) dari tautan berikut.

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

2) Ekstrak folder dan mulai aplikasi TCPView .

3) Klik kanan pada java.exe (karena 8009.885 port biasanya digunakan oleh proses java) dan pilih opsi End Process .

ini akan menghentikan proses lain dengan mudah ..

CATATAN : Menjalankan TOMCATPATH ​​/ bin / shutdown.bat mungkin tidak mematikan Tomcat ketika berisi beberapa setan atau utas yang tidak dikelola. Dalam kasus seperti itu TCPView berfungsi dengan baik tanpa masalah.


2

Jika Anda berada di Java EE prospektif di Eclipse dan mencoba untuk memulai Tomcat Server di Eclipse dalam mode debug, maka Anda akan mendapatkan kesalahan seperti itu. Anda harus beralih untuk men-debug calon di Eclipse. Saya telah memecahkan masalah saya seperti ini.


2

Terkadang jika port tidak dibebaskan bahkan setelah mencoba shutdown.bat seperti yang disarankan @BalusC, Anda dapat mematikan proses javaw. Lakukan langkah-langkah berikut:

  1. Klik pada Start Menu dan buka "Windows PowerShell"
  2. Klik kanan sebelum membuka dan pilih "Run as administrator"
  3. Masukkan perintah ps. Anda dapat melihat gambar sebagai berikut: Powershell menunjukkan proses berjalan saat ini

  4. Lihat nomor proses dari proses "javaw". Nomor proses adalah angka paling kanan di kolom, saya telah menyoroti dalam jumlah proses gambar javaw misalnya.

  5. Masukkan perintah kill. javaw terbunuh dan sekarang Anda harus dapat menjalankan program.


1
Silakan lihat jawaban baru saya di mana saya menyertakan skrip PowerShell untuk mengotomatisasi ini.
Xharlie

2

Berikut ini satu opsi lagi untuk dicoba jika tidak ada upaya di atas yang membantu. Anda mungkin menggunakan Eclipse dari Drive Bersama (misalnya, H :) . Jika demikian, pindahkan / salin seluruh direktori Eclipse ke C: dan coba lagi.

Eclipse saya tidak dapat membuka port untuk server Tomcat (dengan kesalahan di atas), atau bahkan terhubung ke internet. Saya juga mencoba plugin Tomcat lain (Sysdeo) yang gagal membuka port juga.

Ini adalah opsi yang saya coba:

Periksa dan Bunuh Instans Tomcat Lain

  • Di command prompt, netstat -anodan periksa apakah ada proses lain yang menggunakan port yang konflik.
  • Temukan PID dan bunuh
  • Coba mulai server lagi.

Ubah Port Tomcat di Eclipse

  • Di tab Eclipse Server, klik dua kali instance Tomcat. Ini akan membuka tab konfigurasi.
  • Di bawah Port, ubah nomor port. (misalnya, 18080).

Bunuh java.exe dan javaw

Lihat jawaban saya yang lain untuk Eclipse yang tidak terhubung ke Internet ( https://stackoverflow.com/a/37246087/4212710 ).


2

Untuk pengguna windows:

Buka Task Manager secara langsung dengan kombinasi tombol CTRL + SHIFT + ESC.

Bunuh proses "java.exe" dengan mengklik kanan dan memilih "Akhiri Tugas".


2

Saya memeriksa semua jawaban tetapi informing only to kill PID.

Jika Anda memiliki akses terminal yang dibagikan oleh semua, itu tidak akan membantu atau mungkin Anda tidak memiliki izin untuk membunuh PID .

Dalam hal ini yang dapat Anda lakukan adalah:

Double click on server

Go to Overview and change ports in Ports seperti ini:

masukkan deskripsi gambar di sini


1

Perbaikan yang lebih sederhana yang berfungsi untuk saya adalah menghapus aplikasi web saya saat ini dari tomcat melalui tab "Server". Setelah saya menghapusnya, masalahnya hilang. Cukup gunakan kembali proyek Anda dengan menjalankan Run As> Run on Server.


1

Masalahnya sering muncul ketika Apache Tomcat gagal untuk mengakhiri, dengan benar, meskipun instruksi shutdown telah dikirim. Dalam kasus saya, menggunakan Tomcat 8, ini terjadi dengan keteraturan yang mengganggu. Untungnya, Anda dapat menggunakan Windows PowerShell dan netstatperintah untuk membuat skrip sederhana untuk menghentikan prosesnya.

Skrip PowerShell berikut akan mem-parsing keluaran dari netstatuntuk menemukan proses apa pun yang sedang didengarkan 127.0.0.1:8005, ekstrak PID-nya dan kemudian matikan proses itu:

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] }

Jika Anda server.xmlmengkonfigurasi Tomcat untuk menggunakan port atau IP yang berbeda, edit ekspresi reguler pada baris keempat skrip yang sesuai.

Akhirnya, saya harus menunjukkan bahwa situasinya lebih baik di Linux karena Anda dapat menginstruksikan Tomcat untuk menyimpan PID-nya ke file pada saat startup dan menggunakan saklar untuk memaksa shutdown, nanti - skrip shutdown untuk 'nix systems sudah dilengkapi dengan kemampuan untuk membunuh proses dan pekerjaan buruk dengan netstattidak diperlukan.


1

Jika masalah di atas terjadi di OS berbasis Windows 7 atau 10, masalah terjadi karena Tomcat berjalan sebagai Layanan Windows. Untuk menghentikan Tomcat berjalan sebagai Layanan Windows, Buka Panel Kontrol Windows. Temukan layanan "Apache Tomcat" dan Hentikan. Cara lain adalah dengan mematikan proses yang berjalan pada port 8080 menggunakan cmd.

Buka cmd menjalankannya sebagai administrator.

  1. C: \ users \ username> netstat -o -n -a | findstr 0.0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0.00 MENDENGARKAN 2160.
  3. 2160 di atas adalah id proses proses yang berjalan pada port 8080 dan bunuh proses itu menggunakan perintah
    C berikut : \ users \ username> taskkill / F / PID 2160
  4. Pergi ke IDE dan mulai Server, itu akan berjalan

1

Mungkin karena Anda tidak menghentikan layanan kucing jantan dengan benar. Untuk melakukan itu, Buka task manager Anda di sana Anda dapat melihat javaw.exelayanan. Pertama hentikan layanan itu. Sekarang restart kucing jantan Anda itu berfungsi dengan baik.


1

Dalam kasus saya, itu memberi saya kesalahan: Port 8005 diperlukan oleh Tomcat v8.0 Server di localhost sudah digunakan

Saya mengubah port 8005 di apache-tomcat-8.0.39 \ conf \ server.xml tetapi perubahan tidak tercermin. Lalu saya melakukan perubahan ini dari gerhana. dengan mengklik ganda server dan memodifikasi port dari 8005 ke 8006 dan berfungsi. masukkan deskripsi gambar di sini

Sebelum meletakkan 8006 saya memeriksa shell windows apakah port ini tersedia atau tidak. Dengan menjalankan perintah berikut:

netstat -a -o -n | findstr 8006

1

Saya menghadapi masalah yang sama dan setelah mencari jawabannya seperti yang ditunjukkan di bawah ini: 1. buka Monitor Tomcat seperti yang ditunjukkan di bawah ini: masukkan deskripsi gambar di sini

  1. Cukup tekan berhenti seperti yang ditunjukkan pada gambar di bawah ini:

masukkan deskripsi gambar di sini

Akhirnya berhasil dengan saya setelah banyak percobaan dan solusi yang disarankan.

Salam, Kerelos Mikhail


0

Pada Eclipse, hapus folder konfigurasi Tomcat di bawah proyek "Server". Saya mencobanya sebagai harapan terakhir dan itu berhasil.


0

Dalam hal windows, saya mengalami hal-hal baru ... menghentikan tomcat dari folder / bin akan segera tidak melepaskan port 8080. Dibutuhkan sekitar 5-10 menit untuk melepaskan port. Setelah 10 menit lagi jika saya mencoba menjalankan proyek saya Run-> Jalankan di server .. itu memungkinkan untuk berjalan.

Saya tidak yakin apakah pemahaman saya benar!



0

Itu terjadi ketika orang lain dalam proyek ini juga menggunakan nomor port yang sama seperti yang Anda gunakan! klik dua kali tomcat server, ubah nomor port menjadi apa pun 8585 atau apa pun. Kode sekarang akan mulai berjalan!


0

Bagaimana cara mematikan layanan windows menggunakan PID -

  1. buka command prompt dan ketik netstat -ano
  2. menemukan PID port yang digunakan, dalam hal ini, itu akan menjadi 8080, 8005.889. Katakanlah PID port ini adalah 5760.
  3. Sekarang Ketik taskkill /f /pid 5760
  4. itu akan menutup PID dan port akan tersedia untuk digunakan. Sekarang Anda dapat mulai tomcat seperti biasa dengan layanan Windows atau dengan gerhana itu sendiri.

Terima kasih

bunuh layanan Windows yang macet saat berhenti atau mulai


0

Beberapa port (8005, 8080, 8009) yang diperlukan oleh Tomcat vX.X Server di localhost sudah digunakan

Untuk memeriksa apakah instance Tomcat lain sudah berjalan atau proses lain menggunakan port yang dapat Anda gunakan:

netstat -b -adi command prompt untuk windows. Ini mencantumkan port yang digunakan dan memberi Anda executable yang menggunakan masing-masing. Anda harus berada dalam grup admin untuk melakukan ini.

Anda mungkin mendapatkan sesuatu seperti ini:

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]

Buka task manager Ctrl+ Shift+ Esc, dan bunuh Tomcat7.exeatau proses lain menggunakan port ini.


Silakan lihat jawaban baru saya di mana saya menyertakan skrip PowerShell untuk mengotomatisasi ini.
Xharlie

0

Tomcat Anda mungkin sudah berjalan. Itu sebabnya Anda mendapat kesalahan. Saya pernah mengalami masalah yang sama sebelumnya. Saya memecahkannya dengan sangat sederhana:

  1. Hidupkan Kembali komputer Anda
  2. Buka Eclipse
  3. Jalankan Tomcat Anda

Itu saja.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.