プロが教えるわが家の防犯対策術!

Oracle JDBC Driverのロードを以下のように行おうとしました。
import java.sql.*;
class JavaDataAccess01 {
public static void main (String args[])
throws SQLException, ClassNotFoundException {

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

// Oracle10gに接続
Connection conn =
DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:ORCL", "test", "test");

// ステートメントを作成
Statement stmt = conn.createStatement();

// 問合せの実行
ResultSet rset = stmt.executeQuery("select brand_id,value from brand");

// 問合せ結果の表示
while ( rset.next() ) {
// 列番号による指定
System.out.println(rset.getInt(1) + "\t" + rset.getString(2));
}

// 結果セットをクローズ
rset.close();

// ステートメントをクローズ
stmt.close();

// 接続をクローズ
conn.close();
}
}


コンパイル後実行すると以下のように例外がでます。
Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.
OracleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at JavaDataAccess01.main(JavaDataAccess01.java:11)

ちなみにコンパイルして作成したクラスファイルはJavaDataAccess01です。使用しているDBはoracle10gです。環境設定もCLASSPATHにD:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.zipを追加しているのですがどうにもうまくいきません。どなたか解決方法がわかる方、ご教授お願いします。

A 回答 (5件)

いまのところ釈然とはしませんが


jarファイルを関連付ける場合で
うまくいかないときは
コマンドプロンプトで

SET CLASSPATH=D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar;.
(最後にセミコロンとドットをつける)
のようにして見ることで確認できると
思います。
    • good
    • 0

・カレントディレクトリにJarファイルを置いて.にクラスパスを通しても、Jarファイルは見てくれません。

Jarファイルにクラスパスを通す場合はそのJarファイルのパスを指定しましょう。
・CLASSPATH環境変数をセットしても、実行時に-classpathを指定しているとCLASSPATHの内容は無視されます。JARファイルをカレントディレクトリに置く前のコマンドはどうでしたか?
・そもそも環境変数CLASSPATHを使う方法は望ましくありません。
http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs …
    • good
    • 0
この回答へのお礼

有難うございました。何とか解決しました。classパスが一度dosを終了しないと反映されない事をわすれてました。以上を踏まえていろいろな人のアドバイスをもとに勉強します。有難うございました。

お礼日時:2007/09/06 17:19
    • good
    • 0

D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar


だと思う。

14はV1.4
12はV1.2
    • good
    • 0

ORACLEXE10gを使ってますが


微妙に少し異なっていると
思います。私の場合は
C:\OracleXE\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar
ですから
zip>jarなど
再確認してください。

この回答への補足

私の環境ではoracle\product\10.2.0\db_1\jdbc\libに以下情報が格納されています。
classes12.jar
classes12.zip
classes12dms.jar
nls_charset12.jar
ojdbc14.jar
ojdbc14_g.jar
ojdbc14dms.jar
ojdbc14dms_g.jar

ちなみに同カレントに上記ファイルを一式コピーして以下コマンド
C:\>java -classpath . JavaDataAccess01で実行しても
java.lang.ClassNotFoundExceptionが発生します。
初心者で申し訳ないです。ほかに心当たりがありませんでしょうか?
ちなみにJAVA -VERSIONはjava version "1.4.2_14"です。

補足日時:2007/09/04 18:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!