• ベストアンサー

CLASSPATHを設定しても、『ClassNotFound~』になってしまう

はじめまして、質問をさせていただきます。 JDBCを利用して、データベースにアクセスするため、2週間前から javaを勉強している初心者です。 色々なサンプルを参考にして、javaコードを作成しましたが、 java実行時に『ClassNotFoundException』になってしまいます。 過去の質問から、No.952983やNo.957189を参考にさせていただき、JDBCドライバー をダウンロードし、CLASSPATHの設定をしてみましたが変わりませんでした。 その後も色々と調べましたが、なぜCLASSPATH設定が有効にならないのか分かりません。 お手数かとは思いますが、御教授のほどよろしくお願いします。 サーバのOS :LINUX(FedoraCore5) データベース :Postgresql8.1.4(rpmでインストール) JDKのVer   :1.5.0_08 JDBCドライバー:postgresql-8.1-407.jdbc3.jar ↓.bash_profileの設定 export JAVA_HOME=/usr/java/jdk1.5.0_08 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/$JAVA_HOME/lib/postgresql-8.1-407.jdbc3.jar ↓『set』コマンドで確認したCLASSPATH CLASSPATH=.:/usr/java/jdk1.5.0_08/lib/tools.jar://usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc3.jar 以上

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

  • ベストアンサー
  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.5

jar xvf jar_filename で、jarを展開できるので、ファイルの有無は分かるはずです。 ところで、以前の出力ですが java.lang.ClassNotFoundException: org.postgresql.driver なんかおかしくないですか?肝心のクラス名は? パッケージ名しか載っていませんが、importの部分に import org.postgresql.driver; なんて書いてません?

rabre98
質問者

お礼

ご回答ありがとうございます。 ご指摘のおかげで、解決することができました。 原因はコードで "org.postgresql.Driver"とするべきところが、 "org.postgresql.driver"になっていたことでした。 単純な入力ミスで皆様の手を煩わせてしまいました。 申し訳ありませんでした。 dekopa-様には重ね重ねご回答いただき、本当にありがとうございました。 以上

その他の回答 (4)

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.4

#2です。 あー、見つけた、と思ったらすでに#3氏が指摘してますね。 >export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/$JAVA_HOME/lib/postgresql-8.1-407.jdbc3.jar 二つ目、/$JAVA_HOMEとなっているせいで//user/java....となっています。

rabre98
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなり、申し訳ありません。 syakko様へのお礼にも書きましたが、ご指摘の部分(/JAVA_HOME) を修正しても、状態は改善されませんでした。 やはり最初のご指摘とおり、Jarファイル自体がおかしい(CLASS を含んでいない)からなのでしょうか? 引き続き、ご教授のほどよろしくお願いします。 以上

  • syakko
  • ベストアンサー率25% (6/24)
回答No.3

$JAVA_HOMEの前の/はいらないのでは?

rabre98
質問者

補足

ご回答ありがとうございます。 お礼が遅くなり、申し訳ありません。 ご指摘の部分(/JAVA_HOME)を修正してみましたが、まだ ClassNotFoundExceptionのメッセージが出てしまいます。 (setコマンドでも修正されているのを確認しました。) また、javaコマンドのオプションで直接CLASSPATHを設定 して見ましたが、同様にClassNotFoundExceptionの メッセージが出ました。 これはJarファイル自体がおかしい(CLASSを含んでいない) からということなのでしょうか? ↓javaコマンド java -cp .:/usr/java/jdk1.5.0_08/lib/tools.jar:/usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc3.jar Dbaccess ご教授のほど、よろしくお願いします。 以上

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

つい最近も、classpathの区切りを ; にしないで:にして動かないと云っていた人がいたけど。。。 linuxでは、:でも通るんですか? windowsでは、: はドライブ名区切りだから、確実に読み間違われますけど。

rabre98
質問者

補足

ご回答ありがとうございます。 接続元のOSをお知らせしていませんでした。 接続元のOSはLINUX(FedoraCore5)になります。 ご指摘の「:」の件ですが、自分が参考にさせてもらった下記のページによると、 Windouwsの場合 ⇒「;」 Linuxの場合   ⇒「:」 で区切るとのことなので、今回では問題ないと思われます。 ↓参考URL http://www.hellohiro.com/appli.htm 以上

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.1

ええと、ClassNotFoundExceptionは、どのクラスですか? 各jarには、そのclassファイルが入っていますか? postgresのJDBCではなく、その上の、JDBCのinterfaceクラスが無いって事はありませんか?

rabre98
質問者

補足

早速、ご回答していただきありがとうございます。 初心者なものでご迷惑をおかけします。 ClassNotFoundExceptionのメッセージは下記の通りです。 ご指摘のJARファイルの確認をしたいのですが、メッセージの(****.Java)部分がclass名なのでしょうか? 重ねてご質問することになってしまい申しわけありませんが、ご教授のほどよろしくお願いします。 ↓ClassNotFoundExceptionのメッセージ java.lang.ClassNotFoundException: org.postgresql.driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at Dbaccess.main(Dbaccess.java:13) 以上

関連するQ&A