ロゴ  PostgreSQL:JDBC
 PostgreSQL用のJDBCの利用方法。
 Mac OS Xは他のプラットフォームとは少し違っています。

Mac OS X
PostgreSQL
JDBC


関連ページ
 ・PostgreSQL
‐JDBCドライバ
 ・Antインストール
 ・libphp4.so

 

iMacでMacOS X
に戻る


トップページに戻る
● PostgreSQL用JDBCを使用する方法

2002.5.1現在の利用環境
 ・Mac OS X 10.1.4 Build 5Q125
 ・Java2 JDK1.3.1
 ・PostgreSQL 7.1.2

 

・MacOS X の CLASSPATHは何処に有る?

 Mac OS Xでは、環境変数CLASSPATHは使えません(多分)。
 しかし、JDBCドライバ(jarファイル)を置く場所は有ります。
 それは、「/Library/Java/Extensions」フォルダの中です。
 Extensionsフォルダの中に、JDBCドライバ(PostgreSQLなら、posgresql.jar)を入れることでJDBCを使ったデータベースの利用が可能になります。


・PostgreSQL用コンパイル済みJDBCの入手と設定
※:私は、PostgreSQLを--with-javaオプション付きでコンパイルしてJDBCドライバ「postgresql.jar」を作ったので、希望するコンパイル済みのドライバが本当に入手できるか分かりませんm(_ _)m。

1:PostgreSQL JDBCのWebサイトダウンロードページから利用しているPostgreSQL及びJavaのバージョンに合った、コンパイル済みのJDBCドライバ(例:pgjdbc2.jar)をダウンロードします。
#:ちなみにPostgreSQLを--with-javaオプション付きでコンパイルした時に作成されたJDBCドライバ「postgresql.jar」は96KBでした。

2:/Applications/UtilitiesフォルダのTermianlを起動して、jarコマンドでJDBCドライバの中身を確認します。

[localhost:~/Desktop] hoge% jar tvf pgjdbc2.jar | grep Driver
「… org/postgresql/Driver.class」の行が表示されれば(多分)コンパイル済みのJDBCドライバだと考えて大丈夫だと思います。

3:Finderでファイル名を「例:pgjdbc2.jar」から「postgresql.jar」に変えます。
管理者権限の有るユーザなら、Finderで「/Library/Java/Extensions」フォルダに「postgresql.jar」を入れることが出来るはずです。
または、Terminalを使って、

[localhost:~/Desktop] hoge% sudo mv postgresql.jar /Library/Java/Extensions/
Password:管理者パスワードを入力
とsudoを付けてmvコマンドを使えば確実にJDBCドライバを移動出来ると思います。

 

・PostgreSQL用JDBドライバの登録テスト
 JDBCドライバ(postgresql.jar)を「/Library/Java/Extensions」フォルダに入れたら、テストを行います。
※:JDBCドライバの登録が可能かテストするだけですので、PostgreSQLの「postmaster」の起動は必要有りません。

1.以下のコードをテキストエディタで作成し、ファイル名「JDBCtest.java」で保存します。

import java.sql.*;

public class JDBCtest {
    public static void main(String[] args) {
        try {
            //PostgreSQL用JDBCドライバの登録
            Class.forName("org.postgresql.Driver");

            //登録が成功していたとき
            System.out.println("The registration of JDBC succeeded.(^o^)");

        } catch(ClassNotFoundException e) {    //登録が失敗したとき
            System.out.println("The registration of JDBC failed.(T_T)");
            e.printStackTrace();
        } catch(Exception e) {    //別の問題が起きているとき
            e.printStackTrace();
        }
    }
}

2.Terminalを起動して、「JDBCtest.java」をコンパイルし、実行します。

[localhost:~/Desktop] hoge% javac JDBCtest.java
[localhost:~/Desktop] hoge% java JDBCtest
The registration of JDBC succeeded.(^o^)
登録成功(^o^)が表示されればOKです。


#:独り言
 PostgreSQL オフィシャルマニュアル(ISBN-4-8443-1589-7)を購入し、付録のCDからまずバイナリ(pkg形式)を説明に従いインストール。 PostgreSQLの基本的な使い方としてのTerminalでpsqlコマンドを使った方法は、以前Linuxにインストールしたバージョン(PostgreSQL 6.5, 7.0)と変わりなく利用出来たので、調子に乗って(技術も無いのに)「Mac OS XらしくJavaを使ってPostgreSQLを利用したい」と思ったのが無謀でした…。

 結局はJDBCドライバの為だけに、Antのダウンロードとインストール、最新のPostgreSQL7.2.1のソースをダウンロードして「--with-java」オプション付きでコンパイルし、なんとか「/usr/local/pgsql/share/java」フォルダの中に、JDBCドライバ「postgresql.jar」を作らせることに成功しました。

 しかし、ここで気を抜けないのが、まだまだ情報の少ない(有ってもほとんど英語のみの)Mac OS Xのツライところ。
 PostgreSQLのマニュアルでは、UNIX(FreeBSD, Linux等)の場合、環境変数「CLASSPATH」に、JDBCドライバのパスを追加しますが、Mac OS Xで設定ファイル(~/Library/int/tcsh/login.main)に「CLASSPATH」を追加すると、java関連のパスを見失う為か、javaが動かなくなります。(ToT)
 この事実に気付くのにどれだけかかったか…。試しに「Hello Java!」を動かして全く同じエラーを見るまで問題の本質に気付かず、ずっとCLASSPATHの記述の仕方に問題が有ると思っていました。
例えば、

setenv CLASSPATH /usr/local/pgsql/share/java/postgresql.jar
とすると、Terminal(シェル)の起動エラーはな起きませんがjavaが動きません。
setenv CLASSPATH "${CLASSPATH}:/usr/local/pgsql/share/java/postgresql.jar"
とすると、「CLASSPATH」自体がMac OS Xで使われていないのでTerminal(シェル)の起動時にエラーになります。
※:設定ファイルの記述ミスによっては、Terminalは起動出来てもキーの入力を受け付けないことが有るので、設定ファイルを修正した後はメニューから「シェル:新規 [command-N]」を選び、新規Terminalウィンドウを開く様にしたほうが安全です。こうすれば新規ウィンドウが操作不能でも、前に開いていたウィンドウで作業できるので、viなどですぐに修正出来ます。

 CLASSPATHはMac OS Xでは使えないのだと諦め、FinderでJavaに関連の有りそうなものを探していた所、最初の手掛かりとして、「/System/Library/Java」フォルダの「JavaConfig.plist」ファイルを見付けたので、ダブルクリックすると「PropertyListEditor」が起動し、「▼Root_▼apple_DefaultClasspath」項目に「$HOME/Library/Java:...」の記述を発見!。
 「きっとここに違いない!」と思い、「~/Library」フォルダに「Java」フォルダを作り「postgresql.jar」を入れてJDBCドライバの登録(Class.forName("org.postgresql.Driver"))を行うテストを起動…しかし…例外発生(T_T)(ガックリ…)。

 次に、最後の手段(英語ばっかりで読む気がしなかった)デベロッパツールの中のJava関連ドキュメントを読んで、やっとJDBCドライバを入れる場所が分かりました。(最初から読むべきでした。)

 Mac OS XデベロッパツールのJava関連のドキュメント「/Developer/Documentation/Java/java.html」をブラウザで表示し、上段中央「Essentials」の下のリンク"Mac OS X 10.1.1 Java Release Notes"「/Developer/Documentation/ReleaseNotes/Java.html」をクリックして開いたページの、ここ「/Developer/Documentation/ReleaseNotes/Java.html#JarLauncher」の「Java extension locations」に1から5まで「xxx.jar」ファイルの置き場所が指定されていました。
1:~/Library/Java/Extensions/と、2:/Library/Java/Extensions/にJDBCドライバを入れてそれぞれ試したところ、Javaアプリケーション・アプレット共、JDBCドライバの登録及びPostgreSQLのデータベースにアクセス出来ることを確認出来ました。

 

E-mail:ei3k-iwt@asahi-net.or.jp