• ベストアンサー

「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(); } } ------------------------------------------------- 何かおわかりの方いらっしゃいましたら教えて下さい。宜しくお願いします。

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

  • ベストアンサー
  • potedora
  • ベストアンサー率47% (66/140)
回答No.8

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

rio_grande
質問者

お礼

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

その他の回答 (7)

  • itto_
  • ベストアンサー率33% (1/3)
回答No.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
回答No.6

三度,#3です. ひとまずNoClassDefFoundErrorの問題はクリアでよかったですね. ソースを見て気づいたことがあります. SQL文ではで"SELECT COUNT(*) ..."としていますね. そうすると,rset.getString(2)ではおかしなことになります. 整数値が入るフィールドから文字列を読み込めないからです. SELECT * FROM CUSTOMER; とすべきではないですか? これがエラーの原因かどうか分かりませんが...

  • potedora
  • ベストアンサー率47% (66/140)
回答No.5

#2です。 CUSTOMER.classがC:\WORKに存在している場合で cd C:\WORK java -classpath C:\WORK CUSTOMER でやってみてください。

回答No.4

#3です.お返事ありがとうございました. Windows環境下ということですが,CLASSPATHの設定はマイコンピュータのプロパティの中にある「環境設定」で行われているんですよね? 憶測ですが,コマンドプロンプトで実行されているのではないかと思います. もしもそうならば,環境設定の変更は一度コマンドプロンプトを終了しないと,反映されません. 試しに,SETと入力して見て下さい. もしも変更が反映されていないならば,一度終了して再度実行してみて下さい.

rio_grande
質問者

お礼

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) -------------------------------------------------

回答No.3

こんにちは CLASSPATHの設定はどのようになっていますか? CLASSPATH=x:\yyy\classes12.zip (Windowsの場合) という感じですか? もしもそうだったら CLASSPATH=.;x:\yyy\classes12.zip のように,ピリオドとセミコロンを最初に付けてみて下さい. ピリオドはカレントディレクトリを示しています.

rio_grande
質問者

お礼

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

  • potedora
  • ベストアンサー率47% (66/140)
回答No.2

CUSTOMER.classはできていますか? 実行しているカレントディレクトリに CUSTOMER.classがありますか? CUSTOMER.classがC:\WORKに存在している場合 cd C:\WORK java CUSTOMER として実行してみてください。 ソースに間違いがいくつかあるようですので 違うエラーが出ると思います。

rio_grande
質問者

お礼

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

noname#12599
noname#12599
回答No.1

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

関連するQ&A