memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

HSQLDBをmacOSで利用するときに大ハマリしたこと

後期の担当授業(サブ)の1つに2年生向けのデータベース演習という科目があります。

メインで担当されていた先生が今年の春で退職されて、新しく来られた先生がメインを担当されることになりました。

今年はオンライン授業になるため、演習室のPCではなく、自宅のPC(Windows or macOS)で動作することを準備しなければなりません。

mac使いなのでmacの準備に関してサブとしてお手伝いすることになりました。

早速、演習で使用するツールをmacにいれて動作確認していたのですが、その中の1つであるHSQLDBで大ハマリしました。

HSQLDBJava製なのでJVMが動作する環境であればどこでも動作する。。。と高を括っていました。

最新版(2.5.1)を以下のサイトからダウンロードし、圧縮ファイルを展開し、中にあるbin/runManager.batをコピーしてrunManager.shにして、中のパス名などをmac用に書き換えました。

hsqldb.org

以下のような感じです。なんてことはない作業です。

java -classpath ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager

すると。。。以下のエラーメッセージが表示されました。

を検出およびロードできませんでしたtil.DatabaseManager
原因: java.lang.ClassNotFoundException: org.hsqldb.util.DatabaseManager

夜中に2時間くらいウンウン言いながらあれこれ試しましたがダメ。。。

万策尽きた。。。ところで、偶然、AtomでrunManager.shを開いて改行を削除してjavaから始まる1行だけにして保存して再度実行してみると。。。うまく起動しました。

上記で、runManager.shを編集するときにいつもの癖でvimでやっていたんですね。

もともとがbatファイルというくらいなのでWindows形式のファイルだったんです。それをそのままコピーしたので、改行コードの違いが残っていたのでしょう。その見えないキャラクタコードが邪魔をして、上記のわけのわからないエラーが表示されていたのだと思います。

再度、batファイルをコピーしてshファイルを作成し、今度は最初からAtomで編集して以下のようにしてやれば、一発で動作しました。。。vimめ。。。

java -classpath ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager

ついでに書くと、org.hsqldb.util.DatabaseManagerだと表示のフォントが崩れるのでSwingバージョンを使った方がいいようです。なので、runManager.shの中身は以下のようになります。

java -classpath ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

さらに、runManager.shをダブクリすると起動するようにしたいのであれば、FinderでrunManager.shを右クリして「情報を見る」を選択し、このアプリケーションで開くのXcodeからターミナルに切り替えます。

その後、runManager.shの中身を以下のように変更します。cdの行のパスはhsqldbを解凍したフルパス情報になります。みなさんの環境に合わせてください。

cd /Users/(ユーザ名)/Desktop/hsqldb-2.5.1/hsqldb/bin
java -classpath ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

あとは、runManager.shを右クリで「開く」を選択し一度起動すれば、次からはrunManager.shをダブクリするだけで起動できるようになります。

まいった。。。こんなことで2時間もハマるとは。。。