普通の Java 的に考えると JAR ファイルや ZIP ファイルとして用意されている Java クラス・ライブラリをどこかのフォルダに配置して、 CLASSPATH を設定してやればいいように思うのですが、どうもそうではないようです。
Oracle では CLASSPATH に変わる参照の解決の機能として”リゾルバ”なるものが用意されており、これによって Java クラス間の参照が解決されるという仕様になっています。
この時、参照関係にある Java クラスは、スキーマ・オブジェクトとしてロードされている必要があります。
つまり、JAR ファイルや ZIP ファイルも .class ファイルと同様に Oracle 上にロードしてやらなければならないということになります。
Oracle に Java クラスをロードするには、loadjava ユーティリティを使う方法と、CREATE JAVA 文を使う方法がありますが、JAR ファイルや ZIP ファイルをロードできるのは loadjava ユーティリティだけです。
例えば、SCOTT スキーマに commons.jar という JAR ファイルをロードする場合、コマンドプロンプトから以下のように実行します。
loadjava -user scott/tiger commons.jar
このように JAR ファイルや ZIP ファイルを指定して loadjava ユーティリティを実行すると、アーカイブが展開され、個々のクラスが別々のスキーマ・オブジェクトとして Oracle上 にロードされ、Java クラス間の参照の解決が行われるということです。
大量のクラスを含む Java クラス・ライブラリの場合、大量のスキーマ・オブジェクトがロードされてしまい、うっとおしいですが、どうやらこのようにするしかないらしいです^^;
【関連エントリ】
[Oracle] Java ストアドプロシージャの利用法 2004/07/30
[Oracle] Java ストアドプロシージャで日本語ファイル名が扱えない 2004/12/27
[Oracle] loadjava ユーティリティが落ちる? 2006/06/29
[Oracle] Java ストアドプロシージャで Java クラス・ライブラリを使用する 2006/07/05
[Oracle] Java ストアドプロシージャで DLL を使用する際の注意点 2006/07/11