Di Eclipse, saya mendapatkan kesalahan ini:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
Saya tidak yakin mengapa itu muncul sekarang, tetapi itu berjalan dengan baik hanya beberapa jam yang lalu. Apakah saya perlu me-restart mesin saya? Bagaimana saya bisa sampai ke dasarnya? Saya menghargai semua tips atau saran.
Jawaban:
Ya, Anda memiliki proses lain yang terikat pada port yang sama.
TCPView (hanya Windows) dari Windows Sysinternals adalah aplikasi favorit saya setiap kali saya memiliki kesalahan JVM_BIND. Ini menunjukkan proses mana yang mendengarkan port mana. Ini juga menyediakan menu konteks yang nyaman untuk mematikan proses atau menutup koneksi yang menghalangi.
sumber
netstat
adalah perintah yang Anda cari, dengan opsi -a dan -p,man netstat
adalah teman Anda untuk semua yang lain :)Jika Anda tahu port apa yang sedang dijalankan, Anda dapat mengetik:
lsof -i:<port>
.Misalnya,,
lsof -i:8080
untuk membuat daftar proses (pid) yang berjalan pada port 8080.Kemudian bunuh proses dengan
kill <pid>
sumber
sudo apt-get install lsof
java.net.BindException: Address already in use (Bind failed)
saya gunakanlsof -i:8080
dan dapatkantcp6 0 0 :::8080 :::* LISTEN 106872/java
. Apa yang harus saya lakukan ? Bunuh java ??htop
. Mungkin Anda mencoba mengikat ke port yang digunakan oleh program yang valid yang tidak boleh dibunuh.Di jendela
akan mendaftar semua protokol, port dan proses mendengarkan. Menggunakan
untuk membunuh proses mendengarkan port. misalnya
sumber
find
tidak berhasil tetapifindstr
tidak. Untuk menghindari kesalahan positif, juga membantu untuk menambahkan sebuah tanda titik dua, misalnyanetstat -ano | findstr :8080
. Setelah melakukan ini - katakan saja mengembalikan PID 1234 - jika Anda ingin mencari nama proses ini, ini dapat dilakukan melaluitasklist /fi "pid eq 1234
".Di Mac:
Bunuh proses Terminal:
kill <pid>
Temukan pid: Terminal:
lsof -i:<port>
Dari jawaban Diego Pino
sumber
Di Ubuntu / Unix kita bisa menyelesaikan masalah ini dalam 2 langkah seperti dijelaskan di bawah ini.
Tipe
netstat -plten |grep java
Ini akan menghasilkan output yang mirip dengan:
Berikut
8080
adalah nomor port tempat proses java mendengarkan dan9488
proses id (pid).Untuk membebaskan port yang diduduki, kita harus mematikan proses ini menggunakan
kill
perintah.9488
adalah id proses dari sebelumnya. Kami gunakan-9
untuk memaksa menghentikan proses.Port Anda sekarang harus bebas dan Anda dapat me-restart server.
sumber
(Khusus Windows)
Untuk mematikan proses, Anda harus terlebih dahulu menemukan Id Proses (pid)
Dengan menjalankan perintah:
Anda akan mendapatkan Process Id (PID) Anda, Sekarang untuk mematikan proses yang sama jalankan perintah ini:
sumber
Anda memiliki proses lain yang berjalan di port yang sama.
Anda bisa mencoba membunuh salah satu layanan java.exe yang berjalan di task manager Anda - ps pastikan Anda tidak membunuh gerhana karena itu terdaftar sebagai java.exe juga. Jika tidak ada yang berhasil, menyalakan ulang mesin Anda akan memperbaikinya. Sepertinya Anda tidak mematikan soket dari tes sebelumnya. Semoga ini membantu.
sumber
Bagi mereka yang mencari jawaban yang paling sederhana (karena itulah yang biasanya kami lewatkan), hentikan saja proyek yang sedang berjalan dan mulai lagi. Sebagian besar waktu yang kita lakukan adalah kita lupa untuk menghentikan proyek yang kita jalankan sebelumnya dan ketika kita menjalankan kembali proyek itu menunjukkan masalah seperti itu.
Saya juga melampirkan foto untuk membuatnya lebih jelas (saya menggunakan 'Spring tool suite'). Jadi yang perlu Anda lakukan adalah mengklik tombol di kanan ekstrem, jika Anda ingin meluncurkan kembali proyek yang sama atau klik pertama pada tombol yang kedua dari kanan untuk menghentikan proyek Anda dan kemudian tombol di kiri ekstrim untuk menjalankan proyek Anda. Saya harap ini akan menyelesaikan masalah beberapa programmer yang lebih baru. :)
sumber
Di Windows CMD line, cari tahu ID Proses yang menahan koneksi pada port bind dengan memasukkan perintah berikut:
C:> netstat -a -o
-Tunjukkan semua koneksi
-untuk menunjukkan pengenal proses
Dan kemudian Hentikan prosesnya.
sumber
Ya, seperti yang dikatakan Guido Simone karena proses lain mendengarkan port yang sama. Jika Anda berada di Ubuntu, Anda cukup mematikan proses itu dengan memberikan perintah.
sudo kill $(sudo lsof -t -i:[port number])
ex:
sudo kill $(sudo lsof -t -i:8080)
Tapi begitu itu tidak berhasil untuk saya. saya memberi perintah
dan itu tidak menunjukkan apa-apa.
Saya memeriksa kontainer buruh pelabuhan saya dengan menggunakan perintah
docker ps -a
tetapi bukan dari mereka yang hidup. Semua kontainer telah berhenti (tapi saya ingat, saya menghentikan satu kontainer yang menggunakan port yang sama beberapa menit yang lalu.). Untuk memastikan bahwa buruh pelabuhan bukan alasannya, saya berhenti secara keseluruhan proses buruh pelabuhan menggunakan perintahsudo service docker stop
dan coba lagi. Gerhana mengejutkan tidak menunjukkan kesalahan pada waktu itu. Ini menjalankan program saya dengan sempurna.Semoga pengalaman saya akan membantu seseorang.
sumber
Anda perlu menutup port Anda jika Anda adalah pengguna linux lalu ketik
sumber
Port sudah digunakan oleh beberapa proses lain seperti @Diego Pino mengatakan Anda dapat menggunakan lsof di unix untuk menemukan proses dan membunuh masing-masing, jika Anda berada di windows gunakan netstat -ano untuk mendapatkan semua proses dan proses. port yang diperoleh semua orang. cari port yang Anda maksud dan bunuh.
menjadi sangat mudah hanya restart mesin Anda, jika itu mungkin :)
sumber
Nyalakan kembali PC sekali, saya pikir itu akan berhasil. Itu mulai bekerja dalam kasus saya. Satu hal lagi yang bisa dilakukan pergi ke Task Manager dan Akhiri proses.
sumber
Dalam kasus saya, Tomcat berjalan di latar belakang. Saya telah menginstalnya sebagai servlet eksternal saat menggunakan Eclipse. Dengan Boot Spring di Intellij ia memiliki server sendiri tetapi tidak dapat memulai saat sudah ditempati.
Dalam kasus saya, Tomcat mulai secara otomatis saya menyalakan OS saya, itu sebabnya saya harus mematikannya secara manual:
tentu saja "kucing jantan" tergantung pada versi kucing jantan yang Anda gunakan.
Semoga ini bisa membantu seseorang.
sumber
Saya menghadapi masalah serupa di Eclipse ketika dua konsol dibuka ketika saya memulai program Server pertama dan kemudian program Klien. Saya biasa menghentikan program di konsol tunggal berpikir bahwa itu telah menutup server, tetapi hanya menutup klien dan bukan server. Saya menemukan menjalankan proses Java di Task manager saya. Masalah ini diselesaikan dengan menutup kedua program Server dan Klien dari masing-masing konsol (Eclipse menunjukkan konsol dari program aktif terbaru). Jadi ketika saya memulai program Server lagi, port itu kembali terbuka untuk ditangkap.
sumber
Port Anda harus sibuk dalam beberapa Proses Lainnya. Jadi Anda dapat mengunduh TCPView di https://technet.microsoft.com/en-us/sysinternals/bb897437 dan mematikan proses untuk port yang digunakan.
Jika Anda tidak tahu port Anda, klik dua kali pada server yang tidak memulai dan klik pada Open Server Properties Page dan klik pada glassfish dari kolom kiri. Anda akan menemukan porta di sini.
sumber
(1) periksa port sedang digunakan atau tidak, matikan proses itu
$ lsof -i: [port]
(2) alasan lain adalah port digunakan oleh ipv6, solusi:
edit /etc/sysctl.conf
tambahkan ini ke file
net.ipv6.conf.all.disable_ipv6 = 1
kemudian buat efeknya
$ sudo sysctl -p /etc/sysctl.conf
atau hanya reboot
sumber
Ini berarti beberapa proses lain sudah menggunakan port. Jika port ini sedang digunakan oleh beberapa aplikasi penting lainnya dan Anda tidak ingin menutup aplikasi itu, cara yang lebih baik adalah memilih port lain yang bebas untuk digunakan.
Konfigurasikan aplikasi Anda untuk menggunakan port lain yang gratis dan Anda akan melihat aplikasi Anda berfungsi.
sumber
Untuk windows :
Temukan id proses
netstat -nao | temukan "8080"
Ini akan menunjukkan kepada Anda ID proses sebagai nomor.
Contoh :
Di sini 18856 adalah ID proses
Bunuh proses itu
taskkill / PID 18856 / F
Output : SUKSES: Proses dengan PID 18856 telah dihentikan.
Di sini menggunakan taskkill Anda membunuh ID proses: 18856
Untuk linux / Mac :
Di sini Anda menemukan proses menggunakan
sudo lsof -t -i:8080
dan membunuhnya dengan perintah sudo killsumber