けけずんセルフハッキング

エンジニアっぽい雰囲気を醸しだしているかのようなブログです!

「すらすらと手が動くようになる SQL書き方ドリル」の付録にある SQUAT がエラーで起動しない

概要

初心に返って「すらすらと手が動くようになる SQL書き方ドリル」で SQL の勉強しようと思い付録の SQUAT を起動しようとすると、エラーが出て起動しなかった。

そのときのエラー内容と解決方法を書いておく。

環境

  • macOS Catalina (Version 10.15.2)
  • Javaのバージョンは以下の通り
$ java --version
openjdk 12.0.1 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

エラー内容と原因

付録では起動時には予め用意されたスクリプトを実行するだけでよいと書いてあるのだが、スクリプトだと出力が /dev/null に向いており原因が特定できないため、スクリプト中のコマンドをそのまま実行した。 すると以下のエラーが出力される。

$ java -cp data:squat.jar jp.towersquest.squat.Main
(略)
Exception in thread "main" org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]The target which jp.towersquest.squat.gettext.impl.GettextResourceImpl invoked is illegal, because java.util.MissingResourceException: Can't find bundle for base name jp.towersquest.squat.gettext.gettext, locale en_JP
(略)

言語設定が en_JP となっており、それが見つかっていない模様。 よく考えると自分の PC の言語設定が英語、ロケールが日本になっているので en_JP を探しにいったのかもしれない。

解決方法

というわけで、Java 実行時にオプションとして言語設定のオプションを指定してあげるだけで SQUAT が起動した。 コマンドは以下の通り。

$ java -Duser.language=ja -Duser.country=JP -cp data:squat.jar jp.towersquest.squat.Main

これでうまく動いてくれた、やったぜ。