こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

JavaでのOracle接続について(JDBC)

はじめまして。
先週よりJavaの勉強を始めていまして
先日からDB接続(Oracle)をやっているのですが、Oracleに接続することが出来ません。色々なサイトからクラスパスが通っていないというエラーのようなのですが、プログラミング経験のある友人に聞いてもさっぱり原因が分かりません。また何度もインストールをやり直して同じです。以下に環境とソースを載せておきますので、もし何か解決のヒントになるような事がありましたら教えて下さい。

●状況
(1)コンパイルは通るがjavaコマンドで実行をすると”Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driveOracleDriver”が出てしまう。

(2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです)

(3)C:\j2sdk1.4.1_02\jre\lib\extへojdbc14.jarをコピー

(4)SQL PLUSからは接続出来る。
●環境
クライアント:Win2000
DBサーバー:SQLサーバー(別マシンに環境構築)
DB:Oralce9.2.0
JDK:1.4.1_02


import java.sql.*;

class Employee
{
public static void main (String args [])
throws SQLException,ClassNotFoundException
{


// Oracle JDBC Driverのロード
Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@ホスト名:1521:SID",
"ID", "パスワード");

Statement stmt = conn.createStatement ();

ResultSet rset = stmt.executeQuery ("SQL");

while (rset.next ())
System.out.println (rset.getString ("ISBN"));

rset.close();
conn.close();
}
}


以上です。何か足りない情報がありましたら教えて下さい。

投稿日時 - 2006-06-28 16:27:36

QNo.2243529

困ってます

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

java、jdb、javac、javah には、-classpath オプションがあります。
-classpath オプションが設定された場合、環境変数のCLASSPATHは無視される様です。
Tomcat5.0を使用している場合、環境変数でなく、以下のレジストリに設定します。
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat5\Parameters\Java内のClasspathに「;」で区切り、.jarファイル名をフルパスで記述します。

投稿日時 - 2006-07-05 15:47:34

ANo.7

環境変数のPathとCLASSPATHをそれぞれ
クリアな状態で
PathにはJavaのパスだけ
CLASSPATHにはojdbc14.jarとJavaのクラスだけで
環境変数を設定しなおしてみてはどうでしょう?

たとえば以下のように環境変数を設定します。
set ORACLE_HOME=D:\oracle\ora92
set JAVA_HOME=C:\j2sdk1.4.2_03
set Path=%JAVA_HOME%\bin
set APP_PATH=C:\work
set CLASSPATH=%ORACLE_HOME%\jdbc\lib\ojdbc14.jar;%APP_PATH%

#ORACLE_HOMEやJAVA_HOMEはそれぞれオラクル、Javaのディレクトリを設定してください。
#APP_PATHはEmployee.classファイルのあるフォルダです。

これで実行してみてはいかがでしょう?。

投稿日時 - 2006-06-29 20:40:13

ANo.6

>Javaファイル自体認識してくれなくなってしまいました
コンパイルしたJavaプログラムのclassファイルの事ですね。
>CLASSPATHという項目は無かったので新しく追加して
なら、CLASSPATHにclassファイルのパスも通しましょう。自ディレクトリなら CLASSPATH=.;C:\oracle\ora92\jdbc\lib\ojdbc14.jar とか。
CLASSPATHには必要なライブラリ(jarやzip)やclassファイルのパスを通します。

>ojdbc14では駄目なようです。
PATHに通しているJavaの実行環境(JRE)は1.4ですか?
あるいは実行時にフルパスで指定してみてください。
(JRE1.4のパス)\bin\java -classpath ..... と。

投稿日時 - 2006-06-29 10:23:24

お礼

CLASSPATHにclassファイルのパスを通してみてもNotFoundになってしまいます。
またojdbc14の件ですが、oracleインストール時に
Pathに勝手に書かれるjre1.3.1を先に読んでしまっていたようで、
%JAVA_HOME\bin%をここよりも前に書き直した所ojdbc14.jarでも実行できるようになりました。
まだ勉強を始めたばかりでPCの環境的な事もあまり知らずにお手数をおかけしました。

Javaの開発環境で有名(?)なEclipseにて先日のソースを実行したところ実行出来ました。
特にEclipse上でパスを通した事も無いのですが、
javaコマンドで実行するのとeclipseで実行するのと何が違ってるんだろう・・・・
将来的にはjavaコマンドで実行する事はあまり無くなるのかなとは思いますが、これも大切な勉強なので解決するまでしっかりと続けたいと思います。

投稿日時 - 2006-06-29 13:25:15

ANo.5

JavaのパスはJDK1.4のJavaを指してますか?
Java -version
で確認してみてください。
ojdbc14.jar はファイル名のとおりJDK1.4のクラスファイルです。classes12.zipはJDK1.2や1.3のクラスファイルです。(1.4でも動作してました。)

JavaのBin等の実行ファイルはPATHに、classes12.zipやojdbc14.jarなどは他の方が指摘するようにCLASSPATHに設定します。

投稿日時 - 2006-06-29 01:04:03

お礼

Java -version
を試してみた所1.3.1となっていました。
そんなバージョンインストールした記憶が無かったのですが、どうもoracleインストール時のjre1.3.1が設定されてしまっていたようです。
Pathを調べてみると%JAVA_HOME%\binよりもoracleのjreの方が先に記述されていた為、%JAVA_HOME%\binをoracleのjreよりも先に書き直した所、ojdbc14.jarでも実行出来るようになりました。
環境変数自体も今回勉強するにあたってはじめていじった部分だったので、パスの順番も考えないといけないという事も知らずにご迷惑をおかけしました。
ですが、相変わらずclassファイルを認識してくれないというは解消されていないので引き続き色々と調べて試してみたいと思います。

投稿日時 - 2006-06-29 13:40:38

ANo.4

>(2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです)

PATHでは無くCLASSPATHに通しましょう。
あるいは、実行時に java -classpath C:\oracle\ora92\jdbc\lib\ojdbc14.jar としましょう。

投稿日時 - 2006-06-28 17:42:52

お礼

CLASSPATHに通したら今度はJavaファイル自体認識してくれなくなってしまいました。
詳しくは下のnaktak様の回答に書いておきました。

実行時にはclasses12.jarを通す事でうまくいきました。
ojdbc14では駄目なようです。

投稿日時 - 2006-06-28 23:08:03

ANo.3

classes12.zipをCLASSPATHに追加か参照していますか。

投稿日時 - 2006-06-28 17:32:55

お礼

実行時にclasses12.jarにパスを通したらうまくいきました。でもojbc14.jarでは相変わらず駄目です。

投稿日時 - 2006-06-28 23:05:54

ANo.2

ああ、昔のことなのでわすれてしまいましたが、

確か実行時にもクラスパス設定が必要です。システムの環境変数を設定してもいいですし、実行時にクラスパスを指定してもいいです。

基本的には#1様のおっしゃるとおりにすれば動くはずです。実行時のクラスパス指定もお忘れなく。

では、がんばってください。

投稿日時 - 2006-06-28 16:49:33

お礼

実行時にパスを通す事でうまくいきました。
ありがとうございました。

投稿日時 - 2006-06-28 23:04:46

ANo.1

> (2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです)

(2)のパスをシステム環境変数CLASSPATHに登録しましょう。
そしてOSを再起動しましょう。
それが面倒ならコンパイル、実行時に
javac -classpath C:\oracle\ora92\jdbc\lib\ojdbc14.jar; Employee.java
などとしましょう。

投稿日時 - 2006-06-28 16:36:55

お礼

実行時にclasses12.jarに通す事でうまくいきました。
ojdbc14.jarでは動きませんでした。

またシステム変数の話ですが、CLASSPATHという項目は無かったので新しく追加してclasses12.jarにパスを通してみましたが、実行時にjavaファイル自体がClassNotFoundになってしまいました。
基本的な質問なのですが、javaのbinやオラクル関係のパス(インストール時にPathに勝手に書かれるもの)はPathでは無くCLASSPATHに通すものなのですか?

投稿日時 - 2006-06-28 23:02:30

あなたにオススメの質問