JavaをVScodeで記述し,実行する際のエラーを解消した備忘録(CodeRunnerを利用している方向け)
エラー: この文字(0x92)は、エンコーディングwindows-31jにマップできません
このような不快なエラーメッセージが出た.
これはどうやらfilename.javaの中に全角文字が記述されている場合発生するようだった.filename.javaはUTF-8で保存されていた.
UFT-8ではなくShift-Jisで保存すると問題なく同じ動作で実行される(解決策の一つ)
個人的にUFT-8を使いたかったので,どうにかしてそのまま動くようにする.
このとき,使うコーディングに特にこだわりが無い方は,.javaの規定コーディングをShift-Jisに変更することで解決すると思います.
同様のエラーを起こしている人を見つけ対処法が解説されていたのでそのとおりにしてみても消えないが,ターミナルで「javac -encoding UFT-8 filename.java」とすると正常に動作する.
CodeRunnerが元凶
これらから,コンパイルにエラーが発生していることがわかった.このとき,Java Test Runnerの機能の方で実行すると正常に動作する.
これが何を意味するのかというとCodeRunnerがえらっているということ.自分は,cでの実行にShift+ctrl+Nを利用していたため,JavaでもCodeRunnerを使ってコンパイル&実行をしていた.
これらから,setting.jsonの,
"code-runner.executorMap": {
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
}
↓
"code-runner.executorMap": {
"java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
}
とする.-encoding UTF-8
をjavac
の後に設定する.
これによりShift+ctrl+Nによる正常な実行を実現できた.