後期の担当授業(サブ)の1つに2年生向けのデータベース演習という科目があります。
メインで担当されていた先生が今年の春で退職されて、新しく来られた先生がメインを担当されることになりました。
今年はオンライン授業になるため、演習室のPCではなく、自宅のPC(Windows or macOS)で動作することを準備しなければなりません。
mac使いなのでmacの準備に関してサブとしてお手伝いすることになりました。
早速、演習で使用するツールをmacにいれて動作確認していたのですが、その中の1つであるHSQLDBで大ハマリしました。
HSQLDBはJava製なのでJVMが動作する環境であればどこでも動作する。。。と高を括っていました。
最新版(2.5.1)を以下のサイトからダウンロードし、圧縮ファイルを展開し、中にあるbin/runManager.batをコピーしてrunManager.shにして、中のパス名などをmac用に書き換えました。
以下のような感じです。なんてことはない作業です。
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時間もハマるとは。。。