アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして、質問をさせていただきます。

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

以上

A 回答 (5件)

jar xvf jar_filename



で、jarを展開できるので、ファイルの有無は分かるはずです。

ところで、以前の出力ですが

java.lang.ClassNotFoundException: org.postgresql.driver

なんかおかしくないですか?肝心のクラス名は?
パッケージ名しか載っていませんが、importの部分に

import org.postgresql.driver;

なんて書いてません?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
ご指摘のおかげで、解決することができました。

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

以上

お礼日時:2006/09/05 08:38

#2です。


あー、見つけた、と思ったらすでに#3氏が指摘してますね。

>export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/$JAVA_HOME/lib/postgresql-8.1-407.jdbc3.jar

二つ目、/$JAVA_HOMEとなっているせいで//user/java....となっています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お礼が遅くなり、申し訳ありません。

syakko様へのお礼にも書きましたが、ご指摘の部分(/JAVA_HOME)
を修正しても、状態は改善されませんでした。
やはり最初のご指摘とおり、Jarファイル自体がおかしい(CLASS
を含んでいない)からなのでしょうか?

引き続き、ご教授のほどよろしくお願いします。

以上

お礼日時:2006/09/04 10:01

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

この回答への補足

ご回答ありがとうございます。
お礼が遅くなり、申し訳ありません。

ご指摘の部分(/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

ご教授のほど、よろしくお願いします。

以上

補足日時:2006/09/04 09:39
    • good
    • 0

つい最近も、classpathの区切りを ; にしないで:にして動かないと云っていた人がいたけど。

。。
linuxでは、:でも通るんですか?
windowsでは、: はドライブ名区切りだから、確実に読み間違われますけど。

この回答への補足

ご回答ありがとうございます。

接続元のOSをお知らせしていませんでした。
接続元のOSはLINUX(FedoraCore5)になります。

ご指摘の「:」の件ですが、自分が参考にさせてもらった下記のページによると、
Windouwsの場合 ⇒「;」
Linuxの場合   ⇒「:」
で区切るとのことなので、今回では問題ないと思われます。

↓参考URL
http://www.hellohiro.com/appli.htm

以上

補足日時:2006/09/01 17:39
    • good
    • 0

ええと、ClassNotFoundExceptionは、どのクラスですか?



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

この回答への補足

早速、ご回答していただきありがとうございます。

初心者なものでご迷惑をおかけします。
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)

以上

補足日時:2006/09/01 09:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!