プロが教える店舗&オフィスのセキュリティ対策術

ご質問させて頂きます。

java.lang.NoClassDefFoundErrorというエラーが出ます
http://oshiete1.goo.ne.jp/kotaeru.php3?q=952983
の続きの質問なんですが・・・。

次のような実行時エラーが出ます。
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:140)
at sample1.main(sample1.java:8)

そこで、
>PostgreSQLのODBCドライバをCLASSPATHに含めていますか?
>postgresql.jarとかpg72jdbc2.jarといったファイルがどこかにあるはずです.
と、回答者の方からアドバイスをして頂きました。

ところが、postgresql.jarとかpg72jdbc2.jarもありませんでした。
ネットで検索をしたところ、「postgresql743.jar」というのがありましたので
/usr/javaに格納しました。

/etc/profileに、
export PATH=$PATH:/usr/java
export CLASSPATH=$CLASSPATH:/usr/java.
と追加しました。

しかし、同じエラーが出てします。
対処方法をご存じでしたら、ご教授して頂けたら幸いです。

A 回答 (3件)

まともな答えを導き出せなくて申し訳ないです.



> String url = "jdbc:postgresql://192.168.200.230/home/postgres/aa";
> ここの書き方はこれで宜しいのでしょうか?

確かに,いろいろなサイトや書籍で
String url = "jdbc:postgresql://servername:5432/dbname";
としています.私も何も考えずにそうしています.

>SQLERROR: org.postgresql.util.PSQLException: A connection error
>has occurred: org.postgresql.util.PSQLException: FATAL:
>no pg_hba.conf entry for host "192.178.215.230", user "postgres",
>database "home"

上記のメッセージで指定したデータベース "home" になっているということは,
192.168.200.230 の後ろの home がデータベース名として解釈されてい
るようですね.
ローカルの環境でポート番号はなくても動くみたいです.


とりあえず,Linux上で動かしていますので,

○sample1.java
String url = "jdbc:postgresql://localhost:5432/xxxx";
(xxxx にはデータベース名を入れてください)

○pg_hba.conf
host all all 127.0.0.1 255.255.255.255 trust

として行ってみたらいかがでしょう?
pg_hba.confを編集したときはpostmasterの再起動をお忘れなく.

この回答への補足

こんにちは。
ご返事が遅れましてすいません。

お陰様でエラーが取れました。
有り難うございました。

ちょっとご確認したいのですが
PostgreSQLの設定ファイルのpg_hba.confで
>host all all 127.0.0.1 255.255.255.255 trust
と、設定をしたので

sample1.javaでは、
String url = "jdbc:postgresql://localhost:5432/xxxx";
ローカルの設定で良いということなんでしょうか?

よろしくお願いします。

補足日時:2004/08/12 14:17
    • good
    • 0

> またまたご返事して頂いて嬉しいです。


そう言っていただいてありがとうございます.
ここまできたら,解決するまでお手伝いいたします.

今の環境は以前の質問の時と同じですよね?
すなわち,LinuxのPostgreSQLを,telnetを使ってWindowsXPで実行する
という感じで使われているんですよね?

Linuxにログインしている場合は,あくまでもLinux上での操作ということで,
host all all 127.0.0.1 255.255.255.255 trust
だと思います.
host all trust
という記述があったらそれでもいいです.

WinXPにインストールしたPostgreSQLからネットワークで接続する場合は
niizaさんの設定でいいと思うので,別なことを考えないといけませんが.

この回答への補足

ご返事有り難うございました。

>すなわち,LinuxのPostgreSQLを,telnetを使ってWindowsXPで実行する
>という感じで使われているんですよね?
ハイ、そうです。

>host all all 127.0.0.1 255.255.255.255 trust
をやってみたのですが、うまくいきませんでした。

ちょっと気になる点があります。
String url = "jdbc:postgresql://192.168.200.230/home/postgres/aa";
ここの書き方はこれで宜しいのでしょうか?
ポート番号は必要なんでしょうか?

よろしくお願いします。

補足日時:2004/08/10 16:10
    • good
    • 0

こんにちは



> export CLASSPATH=$CLASSPATH:/usr/java/

以下のようにCLASSPATHにファイル名を指定してもダメでしょうか?

export CLASSPATH=$CLASSPATH:/usr/java/postgresql743.jar

CLASSPATHにファイル名???と思われるかも知れませんが(私は思いました),
jarにはクラスが含まれていますので...

ここには同じような体験談?が書かれていますよ.
http://www.jajakarta.org/kvasir/bbs/old/86

頑張ってください.

参考URL:http://ash.or.jp/db/pg_jdbc.htm

この回答への補足

ively-gonさん、こんにちは。
またまたご返事して頂いて嬉しいです。

>export CLASSPATH=$CLASSPATH:/usr/java/postgresql743.jar
としてみたところ、仰るとおりに以前のエラーは無くなりました。

ただ次のようなエラーが出るようになりました。
>SQLERROR: org.postgresql.util.PSQLException: A connection error has occurred: or
>g.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "192.178.2
>15.230", user "postgres", database "home"

ネットで検索したところ、PostgreSQLの設定ファイルのpg_hba.confの
設定を変更すればいいとありました。
http://www.jajakarta.org/kvasir/bbs/technical/59 …

home/postgres/pg_hba.confの設定を次のように変更してみました。
host all all 192.178.215.230 255.255.255.255 trust
tcpip_socket = true

しかし、エラーはなくなりませんでした。
すいませんが、よろしくお願いします。

補足日時:2004/08/10 13:50
    • good
    • 0

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