はじめに
こんにちは。
こちらの記事では、sbt run が立ち上がらないときの対処法を記しています。
前提
開発時に下記の環境を使用しておりました。
- Playframework
- sbt
- tmux
起きていること
あるとき、Playframework で sbt run でローカル環境を起動しようとすると、下記のようなエラーが発生しました。
a.i.TcpListener - Bind failed for TCP channel on endpoint [/0.0.0.0:9000]
java.net.BindException: Address already in use
どうやら localhost:9000 が別のどこかで起動しているようで、sbt run が動作しない状況でした。そこで、起動しているところがないか確かめてみました。
調査・試したこと
tmuxのセッションやウィンドウ、ターミナルのタブを全て確認
まずは、現在立ち上がっているウィンドウを全て確認してみました。
sbtが立ち上がっていたウィンドウは一旦sbtを停止、それでも sbt run のエラーはそのまま。
a.i.TcpListener - Bind failed for TCP channel on endpoint [/0.0.0.0:9000]
java.net.BindException: Address already in use
tmux ls
コマンドで、バックエンドで tmux が立ち上がっていないか確認してみる
$ tmux ls
0: ~~~ (attached)
1: ~~~ (attached)
確認してみると、セッションはすべて attached で起動中なので、すべて sbt が起動していないことは確認済み。
ps aux コマンドで sbt を確認
ps aux | grep sbt
のコマンドで、sbt が立ち上がっていないか確認してみる。
$ ps aux | grep sbt
namehoge 01010 ~~~ sbt
namehoge 02020 ~~~ sbt
namehoge 03030 ~~~ sbt
すると、複数箇所で sbt が立ち上がっていたことを確認。
sudo kill コマンドでプロセスを落とす
sudo kill -9 <プロセス名>
で、不要なプロセスを強制的に落とす。
$ sudo kill -9 ~~~
立ち上げたいプロジェクト以外のプロセスを落とした後に、sbt を再起動すると正常に動作するかと思います。
おわりに
ここまで、tmux 利用時に sbt run が立ち上がらない対処法についてまとめました。
以上、最後まで読んでいただきありがとうございました!