DynamoDB Lokal : Alamat sudah digunakan (port 8000)

TL;DR — DynamoDB Lokal mengikat port 8000 secara default, dan sesuatu sudah menahannya — DynamoDB Lokal sebelumnya yang tidak Anda hentikan, layanan lain, atau duplikat serverless-offline/container. Bebaskan port 8000 atau mulai Lokal pada port lain dengan -port (dan arahkan klien Anda ke sana).

Apa artinya

Exception in thread "main" java.net.BindException: Address already in use
   ... Failed to bind to port 8000

Mengapa itu terjadi

  • DynamoDB Lokal sebelumnya masih berjalanjava -jar DynamoDBLocal.jar (atau docker run) sebelumnya tidak pernah Anda hentikan.
  • Layanan lain memiliki 8000 — server pengembang, proxy, atau aplikasi yang tidak terkait pada port yang sama.
  • Perkakas duplikatserverless-dynamodb-local dan serverless-offline keduanya mencoba mengikat 8000, atau dua tumpukan docker-compose up.
  • Contoh yang error membuat port terikat sebentar (TIME_WAIT), atau container zombie.

Tanpa server dan test runner

Plugin serverless-dynamodb-local dan hook Jest globalSetup sering kali dijalankan Lokal secara implisit — jika Anda juga menjalankan docker run -p 8000:8000 amazon/dynamodb-local secara manual, upaya pengikatan kedua mati dengan BindException meskipun Lokal sudah sehat. Pilih satu peluncur per sesi mesin.

Di macOS, proses Java yang ditinggalkan dari test runner IDE sering kali menjadi penyebabnya — lsof -i :8000 sering menampilkan java dengan PID dari proses Gradle sebelumnya.

Bagaimana cara memperbaikinya

  1. Temukan pemilik port tersebut:
    lsof -i :8000                       # macOS / Linux
    netstat -ano | findstr :8000        # Windows (note the PID)
  2. Hentikan proses itu (atau DynamoDB Lokal lama):
    kill <PID>                          # macOS / Linux
    taskkill /PID <PID> /F              # Windows
  3. Atau jalankan DynamoDB Lokal di port lain dan perbarui klien Anda:
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 8001
    # then: endpoint = http://localhost:8001
  4. Docker? Ubah sisi host pemetaan (-p 8001:8000) dan sambungkan ke 8001.
  5. Hapus plugin duplikat/stacks sehingga hanya satu proses yang mencoba mengikat port.

Di DynoTable

Setelah membebaskan port 8000 (atau memindahkan Lokal ke -port 8001), instal DynoTable dan tambahkan profil Lokal di Pengaturan → Profil → Tambahkan Profil: atur titik akhir http://localhost:8000 (atau port alternatif Anda), wilayah placeholder, dan kredensial tiruan alfanumerik. Uji Koneksi memastikan emulatornya mendengarkan sebelum Anda menelusuri tabel. Panduan: Menjalankan DynamoDB Lokal · Hubungkan ke DynamoDB Lokal & LocalStack.

Saat Anda mengubah port, perbarui titik akhir profil agar cocok — profil tetap menunjuk ke :8000 sementara Lokal mendengarkan di :8001 menghasilkan koneksi ditolak bahkan setelah konflik yang mengikat terselesaikan. Konverter DynamoDB JSON membantu memuat data awal setelah Lokal dapat dijangkau.

Kesalahan terkait

Sumber

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.