Eclipseがどうも取っつきづらかった印象でJavaは敬遠していましたが、Visual Studio CodeでもJavaの開発が出来るとの事で、最近使う機会が増えてきました。
公式でも紹介されている拡張機能であるTomcat for Javaを使用していると、最初のうちは問題ないですが、突然「TypeError: Cannot set property ‘readableListening’ of undefined」というエラーでTomcatが起動しなくなることがあり悩んでいました。
Issuesでも報告はされていますが、作者が問題を認識しておらず、一向に解決されそうな気配はありません。
力業ではありますが、解決したので方法をメモとして残します。
環境:
- Visual Studio Code:1.56.0
- Tomcat for Java:0.11.3
- Remote – Containers:0.177.0
- Docker:20.10.6
- コンテナイメージ:amazoncorretto:11
改めて現象の振り返りですが、Tomcatを起動する為、下記のようにTomcat for Javaの右クリックメニュー→Startを選択します。
すると、VSCodeの通知に「TypeError: Cannot set property ‘readableListening’ of undefined」が表示され、Tomcatが起動できません。
こうなってしまうと何をしても起動が出来ず、泣く泣くDockerコンテナを再ビルドしたりしていました。
結論として、Tomcat for Javaを再インストールすることで解決しました。
ただし、単純にアンインストール→インストールではダメでした。
手順としては下記となります。
VSCodeの左メニューから拡張機能を選択(もしくはCtrl+Shift+X)、インストール済みの拡張機能一覧からアンインストールをします。
が、その後、すぐに再インストールではなく、下記のように再読み込みを促されるので、「再読み込みが必要です」を押下しVSCodeを再起動します。
再起動後、改めてTomcat for Javaをインストールをすることで、Tomcatが正常に起動するようになりました。
ちなみに、GUIではなく、コマンドで行うには下記手順となります。
1.ターミナル(Ctrl+@)で下記コマンドを入力しTomcat for Javaをアンインストール
code --uninstall-extension adashen.vscode-tomcat
2.コマンドパレット(Ctrl+Shift+P)で「開発者:拡張機能のホストを再起動(Developer: Restart Extension Host)」を選択
3.ターミナル(Ctrl+@)で下記コマンドを入力しTomcat for Javaをインストール
code --install-extension adashen.vscode-tomcat
その後、Tomcat for Javaの右クリックメニュー→StartでTomcatが正常に起動しました。
……実際は変なキャッシュとかが残っているだけのような気がするので、extensionのディレクトリを削除すれば一発で解決しそうな気はする。
余力があればもう少し調べてみる。