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

解決済みの質問

「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」エラー

Oracle9i R2にJDBCで接続してCUSTOMER表のレコード件数を調べる単純なJavaプログラムをつくろうとしています。

以下のソースをOracle端末上で実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」というエラーメッセージが表示されます。

環境設定としてCLASSPATHにclasses12.zipのパスを通しました。

-------------------------------------------------
// JDBC APIのインポート
import java.sql.*;class CUSTOMER {
public static void main (String args[])
throws SQLException, ClassNotFoundException {

// JDBC Driverの登録
Class.forName("oracle.jdbc.driver.OracleDriver");

// Oracle9iに接続
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test");

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

// 問い合わせの実行
ResultSet rset = stmt.executeQuery("SELECT COUNT(*) FROM CUSTOMER");

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

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

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

// 接続をクローズ
conn.close();
}
}
-------------------------------------------------
何かおわかりの方いらっしゃいましたら教えて下さい。宜しくお願いします。

投稿日時 - 2004-08-05 11:30:24

QNo.951597

暇なときに回答ください

質問者が選んだベストアンサー

thin@ではなくthin:@です。

投稿日時 - 2004-08-05 16:27:12

お礼

potedoraさん有難うございました。
そうでした。

投稿日時 - 2004-08-09 15:22:02

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

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

回答(8)

ANo.7

>Connection conn =
>DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test");
Exceptionのメッセージ通り、この部分がおかしいようです。
IPアドレス及びポート番号、SID、ユーザー、パスワードはあっていますか?

参考URL:http://www.techscore.com/tech/Java/JDBC/oracle-1.html

投稿日時 - 2004-08-05 16:16:08

ANo.6

三度,#3です.
ひとまずNoClassDefFoundErrorの問題はクリアでよかったですね.

ソースを見て気づいたことがあります.

SQL文ではで"SELECT COUNT(*) ..."としていますね.
そうすると,rset.getString(2)ではおかしなことになります.
整数値が入るフィールドから文字列を読み込めないからです.

SELECT * FROM CUSTOMER;
とすべきではないですか?

これがエラーの原因かどうか分かりませんが...

投稿日時 - 2004-08-05 14:18:32

ANo.5

#2です。

CUSTOMER.classがC:\WORKに存在している場合で

cd C:\WORK
java -classpath C:\WORK CUSTOMER

でやってみてください。

投稿日時 - 2004-08-05 13:31:06

ANo.4

#3です.お返事ありがとうございました.

Windows環境下ということですが,CLASSPATHの設定はマイコンピュータのプロパティの中にある「環境設定」で行われているんですよね?

憶測ですが,コマンドプロンプトで実行されているのではないかと思います.
もしもそうならば,環境設定の変更は一度コマンドプロンプトを終了しないと,反映されません.
試しに,SETと入力して見て下さい.
もしも変更が反映されていないならば,一度終了して再度実行してみて下さい.

投稿日時 - 2004-08-05 13:18:05

お礼

lively-gonさん、ご回答有難うございました。
すみません、コマンドプロンプトを終了させずに実行しようとしておりました。
今、コマンドプロンプトを一度終了し、再度立ち上げて実行したところおっしゃるとおりエラーメッセージが変りました。

引き続き質問して恐縮ですが、無効なOracle URLとはどこの記述が悪いのでしょうか?
-------------------------------------------------
Exception in thread "main" java.sql.SQLException: 無効なOracle URLが指定されまし
た。
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:188)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at CUSTOMER.main(syn_cust.java:17)
-------------------------------------------------

投稿日時 - 2004-08-05 13:46:18

ANo.3

こんにちは

CLASSPATHの設定はどのようになっていますか?

CLASSPATH=x:\yyy\classes12.zip (Windowsの場合)
という感じですか?

もしもそうだったら
CLASSPATH=.;x:\yyy\classes12.zip
のように,ピリオドとセミコロンを最初に付けてみて下さい.
ピリオドはカレントディレクトリを示しています.

投稿日時 - 2004-08-05 12:38:43

お礼

lively-gonさん、ご回答有難うございます。
本件はWindows環境です。ご指摘どおり「.;」を最初につけて試してみましたが、結果は同じになってしまいました。。

投稿日時 - 2004-08-05 13:01:34

ANo.2

CUSTOMER.classはできていますか?
実行しているカレントディレクトリに
CUSTOMER.classがありますか?

CUSTOMER.classがC:\WORKに存在している場合
cd C:\WORK
java CUSTOMER

として実行してみてください。
ソースに間違いがいくつかあるようですので
違うエラーが出ると思います。

投稿日時 - 2004-08-05 12:03:24

お礼

potedoraさん、ご回答有難うございます。
CUSTOMER.classはカレントディレクトリ(F:\直下)にございます。javacコマンドでエラーなくコンパイルできました。しかし、java CUSTOMERを入力すると、このメッセージが出ます。
どうしてでしょうか

投稿日時 - 2004-08-05 12:08:51

ANo.1

CUSTOMERというクラスはないのだと思います。
JAVA何か1度も作ったことがないので間違っているとも老いますが・・・。

投稿日時 - 2004-08-05 11:41:44

あなたにオススメの質問