The Tomcat java.net.BindException: Alamat Sudah Kesalahan Penggunaan di Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat apa yang menyebabkan ralat umum java.net.BindingException: Kesalahan alamat sudah ada dalam Penggunaan dan bagaimana kita dapat menanganinya.

2. Bilakah Kesalahan Berlaku?

Seperti yang kita ketahui, pelayan Apache Tomcat, secara lalai, menggunakan port 8080.

Nombor port berkisar antara 0 hingga 65535, namun port hanya dapat dihuni oleh satu aplikasi setiap saat .

Pengecualian menyatakan bahawa aplikasi sedang berusaha menggunakan port yang sudah diambil oleh proses lain, atau kami tidak menghentikan pelayan Tomcat dengan betul.

3. Mendiagnosis

Untuk menyelesaikan ralat ini, kita boleh mematikan perkhidmatan yang mengambil port itu atau boleh mengubah pelayan web kita untuk berjalan di port lain.

3.1. Menemui Konflik

Dalam kes ini, kita perlu mengetahui aplikasi mana yang menggunakan port.

The netstat perintah boleh digunakan untuk menerokai semasa sambungan TCP / IP.

Di bawah ini adalah arahan yang dapat digunakan untuk mencari dan membunuh proses tersebut dalam lingkungan yang berbeza.

Pada Windows, lajur keluaran terakhir akan memberi kami id proses perkhidmatan yang sedang berjalan pada tahun 8080:

netstat -ano | find "8080"

Pengeluaran:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

Di sini, 21376 adalah id proses dari proses yang sedang mendengar di port 8080.

Pada Persekitaran Unix / Linux :

netstat -pant | grep "8080"

Pengeluaran:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

Sama dengan output Windows. Di sini, 21376 adalah id proses dari proses yang sedang mendengar di port 8080.

Pada Mac OS X:

lsof -t -i :8080

Pengeluaran:

21376

Ia akan memaparkan PID sahaja.

3.2. Menjalankan Pelayan di Pelabuhan Lain

Sekiranya kita tahu proses apa yang sedang berjalan, mengapa ia berjalan dan yang perlu dijalankan di port itu, kita dapat mengubah port yang cuba dijalankan oleh aplikasi pelayan kita.

Untuk menukar port Tomcat, kita perlu mengedit fail server.xml . Untuk membuat ini:

  • Buka folder tomcat / conf
  • edit pelayan.xml
  • gantikan port penyambung dengan port baru
  • mulakan semula pelayan tomcat

The server.xml fail kelihatan seperti ini:

Sekarang Tomcat akan berjalan di port yang disesuaikan.

3.3. Membunuh Perkhidmatan yang Berjalan

Untuk menghentikan proses berjalan, kita dapat menggunakan perintah kill .

Dengan menggunakan ID proses yang kami dapati di 3.1., Kami memerlukan perintah yang berbeza bergantung pada Sistem Operasi yang kami jalankan.

Pada persekitaran Windows:

taskkill /F /PID 21376

Pada persekitaran Unix / Linux:

kill - 21376

Persekitaran Mac OS X:

kill -9 21376

4. Kesimpulan

Seperti yang disebutkan di awal artikel, java.net.BindingException adalah ralat yang lazim tetapi mudah diselesaikan.

Kesukaran utama adalah mencari perkhidmatan yang bertentangan menggunakan port dengan aplikasi terminal netstat kemudian memutuskan tindakan yang sesuai.

Setelah ditemui, penyelesaiannya mudah.