Oracle用のJDBCドライバ

ProjectBuilder(OSX10.2付属)で、Javaプログラムを作っています。使用OSも10.2です。
JDBCでOracle8に接続したいのですが、
1)JDBCドライバはUNIXの汎用Thinドライバで良いのですか?
2)ダウンロードすると勝手に解凍されますが、そのフォルダはどこに保存すればJavaプログラムから認識されますか?
現在、Terminalでシェルの環境変数「PATH」にそのドライバダウンロードした時のフォルダを指定しています。でもビルドするとエラーが出ます。
どなたか教えて下さい。お願いします。

投稿日 2002/08/26 09:16

返信: 9

2002/08/26 09:40 Community User への返信

Thin Driverであればどのプラットフォームのものでも一緒ではないですかねぇ...
入れる場所ですが、/Library/Java/Extentions/ に入れておくのが
手っ取り早いです。
※環境変数 PATH はJavaのライブラリとは一切関係ありませんよ。

2002/08/26 10:10 Community User への返信

即効レス、感謝です!助かります!
早速試してみます。
ところで、ダウンロードしたのはOracleのサイトからなんです
けど、ダウンロードすると「auth_r.cgi」という圧縮ファイルで
これが勝手に解凍されます。このフォルダには「javax」と
「oracle」というフォルダの2つありますが、
”/Library/Java/Extentions/”に入れるのは「auth_r.cgi」
フォルダでいいんでしょうか?
と言いながら一応試してみますが・・・。

2002/08/26 10:28 Community User への返信

やはり認識しません・・・。
「シンボルを解釈処理できません。
シンボル: クラス OracleDriver
位置 : driver の パッケージ
DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver());」
とコンパイルエラーになります。
所定の場所に入れるフォルダを間違えているのでしょうか?

2002/08/26 12:27 Community User への返信

「auth_r.cgi」はブラウザが勝手に着けている名前で、その名前のフォルダはStuffItExpander(?)が勝手に作ってるフォルダです。
その中の2つのフォルダを入れてください。
あと、この手の書庫ファイルはStuffItExpanderではなくOpenUpやTerminalでのtarとかgzipとか使った方が無難です。StuffItExpanderは31文字以上のファイル名に対応できてなかったように思いますので。
#Oracleで.sitファイルを配布しているとは考えにくいので.zipとか.tgzとか
#その辺りなんだろうし。

2002/08/26 13:09 Community User への返信

やってみましたが駄目です。同じエラーが出ます。
ミスタイプかな?とか見てみても大丈夫そうだし。
試しに、Javaで作られたFreewareの「dbVisualiser」という
ソフトを使って同じJDBCでつないだらあっけなくつながりました。
と言う事はドライバの問題というよりはプログラムの問題ですよね?でもこのソースも本にあるものをそのまま打っているんですが(Windowsを前提に書いてある本ではありますが・・・)。
もう少し悩んでみます。すいませんでした。

2002/08/28 13:33 Community User への返信

すいません。やっぱり助けて下さい。
なぜかdbVisualizerでも接続できなくなってしまいました。
ややこしいのでdbVisualizerの事は除外します(自分で言っておきながら・・・)。
JDBCドライバロード部分のソースを書きます。
***ここから***
import java.sql.*;
public class Enshu3_0 {
public static void main (String args[]) {
try{
//(1)JDBCドライバをロードします。
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
***ここまで***
ビルドした際のエラーログには、
「シンボル: クラス OracleDriver
位置 : driver の パッケージ
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
^
エラー 1 個」
となっています。
ネットでいろいろ調べたところ、DriverManagerクラスの記述を、
「Class.forName("oracle.jdbc.driver.OracleDriver");」
に変えてみてはどうか、というのがあったので変えてみたところ
今度は
「java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:183)
at java.lang.ClassLoader.loadClass(ClassLoader.java:294)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:281)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:115)
at Enshu3_0.main(Enshu3_0.java:16)
java はステータス 0 で終了しました。」
と表示されます(これは実行結果を表示する白いウィンドウに
赤い字で表示されました)。この状態だと、JDBCドライバのみならず
クラスライブラリ全体(パッケージ?)へのパスが
通っていないのではないか、とも思いました。
前回教えていただいたところ(/Library/Java/Extensions)に最新版のJDBCドライバ(「javax」フォルダと「oracle」フォルダ)を置いています。ここはパスは通っているんですよね?
さらに話は進んで、環境変数やシェル変数にもパスを通さなくてはいけないのかな、と思いました。
setenv PATH /bin:/sbin:/usr/bin:/usr/sbin:/Library/Java/Extensions
や、
set path=($PATH /bin:/sbin:/usr/bin:/usr/sbin:/Library/Java/Extensions)
とかでやってみて、Terminal上でコンパイル&実行をかけても結果は同じです。
何が原因なのでしょうか?もう頭がパニックです(情けない・・)。
どうか教えて下さい。

2002/08/28 14:00 Community User への返信

環境変数CLASSPATHに"/Library/Java/Extensions"を追加してみてください。
環境変数PATHは関係ないです。

2002/08/29 04:16 Community User への返信

PATHはターミナル上でコマンドを探す際に参照される環境変数なので本件とは一切関係ありませんよ。
また、/Library/Java/Extensions は、ほかのプラットフォームでいうところの ext フォルダです。ここに入れたものは CLASSPATH 環境変数に追加したり、javaコマンドの-classpath引数の指定をしなくてもロード可能なはずです。
javax フォルダと oracle フォルダを置いたとのことですが、フォルダではなくて以下のファイルがあれば、それらを直接/Library/Java/Extensionsに置いてみてもらえますか?
- classes12.zip (あるいはclasses111.zip)
- nls_charset12.zip (あれば)
- ocrs12.zip (あれば)
javax フォルダと oracle フォルダという記述からすると、上記のclasses12.zip を StuffIt Expander 等で展開してしまっておられるのかと想像しますが、展開前のclasses12.zipを置いてみてください。
ダウンロードされたOracle Thin Driverが9.0.1のものであれば、auth_r.cgiといった名前のファイルをclasses12.zipとかに変えてあげればいいです。

2002/08/29 07:33 Community User への返信

本当にどうもありがとうございます。めでたくJDBCドライバ認識されました。
おっしゃる通りに3つのファイルをダウンロードして/Library/Java/Extensionsに置きました。
その後、別の接続エラー(I/O Exceptionのエラー)が出ました。
そこでソースを「DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());」
から、
「Class.forName("oracle.jdbc.driver.OracleDriver");」
に変更しましたところ、
dbVisualizerでも、はたまたProjectBuilderでも、またTerminal
からでも実行できました(うーん、なぜだろう・・・)。
一応気になるので原因を探ろうと実験してみました。
・3つのうち、classes12.zip以外はなんのファイルなのか
わからないので取り除いてみると・・・それでも接続できた。
・classes12.zipの名前を変えたり、拡張子を「cgi」に変えたり
しても・・・また接続できた。
ダウンロードした際に「auth_r.cgi」という名前になりますが、
この名前を「classes12.zip」に変更するときにひょっとしたら
クリエータ情報(MacOSがもつファイル情報)が書き換わるのかな?
という想像をしております(cgiをzipに変更するときに確認の
ダイアログが出るのに、再度zipをcgiにする時にはダイアログが
出ません)。
これでやっと、プログラム出来ます(でもまた別の問題発生・・・)。
ありがとうございました。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Oracle用のJDBCドライバ

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。