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

締切り済みの質問

DBサーバ上でjdbcによるアクセス方法について

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を追加しているのですがどうにもうまくいきません。どなたか解決方法がわかる方、ご教授お願いします。

投稿日時 - 2007-09-04 17:24:19

QNo.3315009

困ってます

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

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

回答(5)

ANo.5

いまのところ釈然とはしませんが
jarファイルを関連付ける場合で
うまくいかないときは
コマンドプロンプトで

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

投稿日時 - 2007-09-07 21:19:33

ANo.4

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

投稿日時 - 2007-09-05 10:37:34

お礼

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

投稿日時 - 2007-09-06 17:19:14

ANo.2

D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar
だと思う。

14はV1.4
12はV1.2

投稿日時 - 2007-09-04 18:58:35

ANo.1

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

投稿日時 - 2007-09-04 18:09:39

補足

私の環境では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:38

あなたにオススメの質問