VS CodeでJUnitを実行しようとしたら謎のエラーが出た

久しぶりにLeetCodeをJavaで解いていたらVS Codeがエラーを吐いたので、解決した手順をメモしておく。

 

 

[発生したエラー]

f:id:kidani_a:20210505114318p:plain

VS CodeJava Test Runner拡張機能を使って、画面上の「Run Test」をクリックしてテストを実行しようとしたところ、テストが実行されず、以下のエラーが出た。

 

void org.eclipse.jdi.internal.connect.ConnectorImpl$StringArgumentImpl.<init>(org.eclipse.jdi.internal.connect.ConnectorImpl, java.lang.String, java.lang.String, java.lang.String, boolean)'

f:id:kidani_a:20210504092801p:plain

 

これだけを見ても何がどう問題なのか、よくわからない……。「Open launch.json」をクリックしてlaunch.jsonを開いてみても、関係しそうな記述が見当たらない。 

 

[拡張機能のバージョン問題]

エラーメッセージでGoogle検索すると、以下のStackOverflowの質問がヒットした。2021年4月30日の質問なので、1週間もたっていない。比較的最近の問題のようだ。

stackoverflow.com

 

回答によると、Debugger for Java拡張機能のバージョンの問題で、0.33.1にアップデートすれば解決すると言われている。

 

このときのVS Codeの最新バージョンは1.55.2だったが、自分が使っていたのが(おそらく)1.53.1と少し古いバージョンだった。

そのせいか、拡張機能の画面で「Uninstall > Install Another Version...」を選択して拡張機能のバージョンを変更しようとしても、Debugger for Javaの最新バージョンは0.31.0だと言われてしまい更新ができなかった。

f:id:kidani_a:20210505171215p:plain

 

このときはVS Code本体のバージョンを上げるということに思い至らず、他の方法はないかと先ほどのStackOverflowのページを見ていると、GitHubのIssueへのリンクがあった。

github.com

 

こちらのコメントで「一時的にLanguage Support for Java(TM) by Red Hat拡張機能0.77.0にダウングレードしたら動いた」とコメントがあった。

試してみると、無事にJUnitテストを実行できた。

 

その後、いつまでも拡張機能のバージョンが古いままだと困るな、と思い、VS Codeを現時点で最新の1.55.2までバージョンアップしたところ、自動的に拡張機能のバージョンアップが開始された。

VS Codeのバージョンアップの結果、Language Support for Java(TM) by Red Hat拡張機能はバージョン0.79.1に、Debugger for Java拡張機能0.33.1になった。

それぞれのバージョンが上がったところで改めて試してみると、問題なくJUnitテストを実行できた。

 

[まとめ]

  • VS Codeのバージョンアップはマメにやった方がよさそう
  • 拡張機能の動作に問題があるときは、拡張機能のバージョンを下げると有効な場合もある