
はじめまして。
先週より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();
}
}
以上です。何か足りない情報がありましたら教えて下さい。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.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ファイル名をフルパスで記述します。
No.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ファイルのあるフォルダです。
これで実行してみてはいかがでしょう?。
No.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 ..... と。
CLASSPATHにclassファイルのパスを通してみてもNotFoundになってしまいます。
またojdbc14の件ですが、oracleインストール時に
Pathに勝手に書かれるjre1.3.1を先に読んでしまっていたようで、
%JAVA_HOME\bin%をここよりも前に書き直した所ojdbc14.jarでも実行できるようになりました。
まだ勉強を始めたばかりでPCの環境的な事もあまり知らずにお手数をおかけしました。
Javaの開発環境で有名(?)なEclipseにて先日のソースを実行したところ実行出来ました。
特にEclipse上でパスを通した事も無いのですが、
javaコマンドで実行するのとeclipseで実行するのと何が違ってるんだろう・・・・
将来的にはjavaコマンドで実行する事はあまり無くなるのかなとは思いますが、これも大切な勉強なので解決するまでしっかりと続けたいと思います。
No.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に設定します。
Java -version
を試してみた所1.3.1となっていました。
そんなバージョンインストールした記憶が無かったのですが、どうもoracleインストール時のjre1.3.1が設定されてしまっていたようです。
Pathを調べてみると%JAVA_HOME%\binよりもoracleのjreの方が先に記述されていた為、%JAVA_HOME%\binをoracleのjreよりも先に書き直した所、ojdbc14.jarでも実行出来るようになりました。
環境変数自体も今回勉強するにあたってはじめていじった部分だったので、パスの順番も考えないといけないという事も知らずにご迷惑をおかけしました。
ですが、相変わらずclassファイルを認識してくれないというは解消されていないので引き続き色々と調べて試してみたいと思います。
No.4
- 回答日時:
>(2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。
(setコマンドでも確認済みです)PATHでは無くCLASSPATHに通しましょう。
あるいは、実行時に java -classpath C:\oracle\ora92\jdbc\lib\ojdbc14.jar としましょう。
CLASSPATHに通したら今度はJavaファイル自体認識してくれなくなってしまいました。
詳しくは下のnaktak様の回答に書いておきました。
実行時にはclasses12.jarを通す事でうまくいきました。
ojdbc14では駄目なようです。
No.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
などとしましょう。
実行時にclasses12.jarに通す事でうまくいきました。
ojdbc14.jarでは動きませんでした。
またシステム変数の話ですが、CLASSPATHという項目は無かったので新しく追加してclasses12.jarにパスを通してみましたが、実行時にjavaファイル自体がClassNotFoundになってしまいました。
基本的な質問なのですが、javaのbinやオラクル関係のパス(インストール時にPathに勝手に書かれるもの)はPathでは無くCLASSPATHに通すものなのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オラクル12C_SQLPlusで実行す...
-
oracle 2つの列の比較
-
SQL ブレーク処理について
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
-
オラクルゴールドについて
-
sqlのupdate文で質問です。 テ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleで流したSQLのログを取得...
-
PL/SQLでログを確認したい。
-
ストアド・プロシージャをバッ...
-
JavaでのOracle接続について(J...
-
SQL*Plusで、コマンドの返答を...
-
ORA-00984のエラーが出ます
-
トレースファイルの削除スクリプト
-
batファイルでのSQL(oracle)...
-
SQL実行結果取得
-
Accessからoracleのストアドプ...
-
サービスの再起動を自動で
-
pl/sqlでのautotraceについて
-
SQL*Plusで以前に実行したコマ...
-
PL/SQLからshellスクリプ...
-
SQLplusからコマンドプロンプト...
-
SQL*PLUSを終了させる方法
-
SQL実行結果の出力を見やすくし...
-
ShellからTruncate【Linux】
-
リスナーログを出力しない設定方法
-
ソート(大文字・小文字を区別...
おすすめ情報