java.lang.NoClassDefFoundErrorというエラーが出ます

このQ&Aのポイント
  • java.lang.NoClassDefFoundErrorというエラーが出ています。
  • 質問者はpostgresql.jarやpg72jdbc2.jarが見つからず、「postgresql743.jar」を/usr/javaに格納しましたが、同じエラーが出てしまいます。
  • アドバイスとして、回答者はPostgreSQLのODBCドライバをCLASSPATHに含めるように提案しています。
回答を見る
  • ベストアンサー

java.lang.NoClassDefFoundErrorというエラーが出ます その2

ご質問させて頂きます。 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. と追加しました。 しかし、同じエラーが出てします。 対処方法をご存じでしたら、ご教授して頂けたら幸いです。

  • niiza
  • お礼率43% (211/486)
  • Java
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答No.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の再起動をお忘れなく.

niiza
質問者

補足

こんにちは。 ご返事が遅れましてすいません。 お陰様でエラーが取れました。 有り難うございました。 ちょっとご確認したいのですが 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"; ローカルの設定で良いということなんでしょうか? よろしくお願いします。

その他の回答 (2)

回答No.2

> またまたご返事して頂いて嬉しいです。 そう言っていただいてありがとうございます. ここまできたら,解決するまでお手伝いいたします. 今の環境は以前の質問の時と同じですよね? すなわち,LinuxのPostgreSQLを,telnetを使ってWindowsXPで実行する という感じで使われているんですよね? Linuxにログインしている場合は,あくまでもLinux上での操作ということで, host all all 127.0.0.1 255.255.255.255 trust だと思います. host all trust という記述があったらそれでもいいです. WinXPにインストールしたPostgreSQLからネットワークで接続する場合は niizaさんの設定でいいと思うので,別なことを考えないといけませんが.

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"; ここの書き方はこれで宜しいのでしょうか? ポート番号は必要なんでしょうか? よろしくお願いします。

回答No.1

こんにちは > 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
niiza
質問者

補足

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?msg=4#msg241 home/postgres/pg_hba.confの設定を次のように変更してみました。 host all all 192.178.215.230 255.255.255.255 trust tcpip_socket = true しかし、エラーはなくなりませんでした。 すいませんが、よろしくお願いします。

関連するQ&A

  • jdbcを利用したpostgres接続

    Solaris9/02 + PostgreSQL7.2.3 で構築しました。 java -version 1.4.0_01 です。 PostgreSQL の Configure時に --with-javaオプションを付け、 /usr/local/pgsql/share/java 配下にpostgres.jarが出来ました。 /home/ssm3u の .cshrcに setenv JAVA_HOME /usr/j2se setenv CLASSPATH /usr/local/pgsql/share/java/postgres.jar:. (postgres.jarファイルとカレント) を追加し、 % vi FirstDBAccess.java import java.sql.*; public class FirstDBAccess {  public static void main(String argv[]) {   try {    Class.forName("org.postgresql.Driver");   } catch (Exception e) {    e.printStackTrace();   }  } } % javac FirstDBAccess.java % java FirstDBAccess と実行すると、 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:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265) at java.lang.ClassLoader.loadClass(ClassLoader.java:262) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:130) at FirstDBAccess.main(FirstDBAccess.java:5) となります。 上記エラーになるのは CLASSPATH設定がおかしい時と思うのですが、 何がおかしいのかわかりません。 Oracleとか他のDBの時はあっさりできたのに・・・ 他に設定が必要なのでしょうか? 見直せば良い点などお教えいただければ助かります。

  • java.lang.NoClassDefFoundError。。。

    どうぞ知恵をお貸しください。 ・jdk-1.5.0.16 ・mysql-4.0.26-win32 ・mysql-connector-java-3.1.14 ・eclipse 3.2.0 をダウンロード、インストールしてjavaの勉強を行っています。 コマンドプロンプトよりコンパイルを成功した場合は実行時に下記のエラーが、 Exception in thread "main" java.lang.NoClassDefFoundError コンパイルに失敗した場合は「読み込めません」のエラーが出力されます。 環境変数でCLASSPATHも設定してありますが、あえて実行時にclasspathを指定しても試みてみましたがエラーは変わりません。 何が原因なのでしょうか? どうぞご指導をよろしくお願いします。 エラー全文 Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: mypackage/sample) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)

  • JavaとMySQLを接続できなくて困っています。

    MySQLで作成したデータベースをJavaを使って表示するというプログラムを作っているのですが、JDBCドライバがうまく機能せず、接続できません。初歩的な問題なのだとは思いますが、どなたか解決方法を教えてください。 import java.sql.*; public class Iwate1 { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try{ String drv = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql:///iwate"; String usr = "----"; String pw = "-------"; Class.forName(drv).newInstance(); Connection cn = DriverManager.getConnection(url, usr, pw); Statement st = cn.createStatement(); String qry = "SELECT * FROM iwate_table"; ResultSet rs = st.executeQuery(qry); ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()){ for(int i=1; i<=cnum; i++){ System.out.print(rm.getColumnName(i)+":"+rs.getObject(i)+" "); } System.out.println(""); } rs.close(); st.close(); cn.close(); } catch(Exception e){ e.printStackTrace(); } } } 結果は java.lang.ClassNotFoundException: com.mysql.jdbc.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:276) 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:169) at Iwate1.main(Iwate1.java:17)

  • JAVA twitter4j エラー

    JAVA twitter4j エラー JAVA初心者です。 http://d.hatena.ne.jp/regeek/20100511/1273599348 で公開されているソースなのですが、コンパイルはとおるのですが、 実行する時に以下のようなエラーをはき、困っています。 ############################## 上のサイトからソースをコピペする(現在のディレクトリをnowとします) /now/Application.java /now/LoginDialog.java /now/TimeLine.java twitter4j-2.1.2.jarを /now/twitter/twitter4j-2.1.2.jarに置く $javac -classpath twitter/twitter4j.jar *.java $java Application ###←ここで以下のようなエラーがでます Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/TwitterException Caused by: java.lang.ClassNotFoundException: twitter4j.TwitterException at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 環境は $java -versionで以下の通り java version "1.6.0_18" OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1) OpenJDK Server VM (build 14.0-b16, mixed mode) $javac -versionで以下の通り javac 1.6.0_18 です。 個人的には sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) とあるので、これはもしやUbuntuのOpenJDK Runtimeではだめなのか? と考えているのですが・・・ どなたか解決方法をご教授頂けないでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • NoClassDefFoundErrorの解決方法

    netbeansでjava.lang.NoClassDefFoundErrorの解決方法を教えて下さい。 NetBeans IDE 7.0を使ってJAVAで、「Hell World !」を表示するものを 作りました。 ソースコード public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } NetBeansで、 「実行]-「ファイルを実行」とすると、「Hello World!」と表示されます。 正しく動きます。 しかし、 「実行」-「プロジェクトを実行」とすると、以下のエラーメッセージがでます。 java.lang.NoClassDefFoundError: helloworld/HelloWorld Caused by: java.lang.ClassNotFoundException: helloworld.HelloWorld at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: helloworld.HelloWorld. Program will exit. Exception in thread "main" Java Result: 1 また、コマンドラインから以下の様に実行しても、実行してもエラーとなります。 C:\Program Files\Java\jdk1.6.0_25\bin>java.exe -jar C:\java\HelloWorld\dist\HelloWorld.jar Exception in thread "main" java.lang.NoClassDefFoundError: helloworld/HelloWord Caused by: java.lang.ClassNotFoundException: helloworld.HelloWorld at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: helloworld.HelloWorld. Program will exit. そこで、 ソースコードに、「package helloworld;」の記述を行いと期待した結果となりました。 NetBeansで、「実行」-「プロジェクトを実行」 コマンドラインから実行 しても、「Hello World!」と表示されます。 ソースコード package helloworld; public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } 何故、 「package helloworld;」の記述の追加で動いたのでしょうか。 あるとないとで、どう違うのでしょうか。 「package helloworld;」は、何を意味しているのでしょうか。 環境は、 JDK1.6(jdk1.6.0_25) クラスパスは未設定。

  • javaでscalaのクラスを使う

     Scala初心者です^^  Scalaで作ったクラスをJavaで使おうとしています.  しかしなかなかうまくいかなくて…  ソースを下に書いておきます. [ap/hello.scala] class hello(str2: String){ val str = str2 def say(){ println(str) } } [ap/start.java] public class start{ public static void main(String[] args){ hello h = new hello("Hello!"); h.say(); } }  helloクラスのコンストラクタを用いて指定した文字列を helloクラスのsayメソッドで標準出力するだけの簡単なクラスなのですが, うまく実行できず… Exception in thread "main" java.lang.NoClassDefFoundError: ap/start/class Caused by: java.lang.ClassNotFoundException: ap.start.class at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Kazus-MackBookPro:ScalaLearning macuser$ java ap/start Exception in thread "main" java.lang.NoClassDefFoundError: ap/start (wrong name: start) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) というエラーが出てしまいます.    どこが悪いかわかる方いらっしゃいませんか?  それとも,JavaではScalaで作った.classファイルは使うことができないのでしょうか?  Scalaはまだ覚えて2週間なので,まだ完全に理解できていません><    よろしくお願いします

  • Macで実行可能jarが実行できない

    EclipseでJavaの開発をしているのですが、Windowsで実行可能jarでエクスポートするとダブルクリックで実行できるソースコードが同じコードで、Macでエクスポートすると実行出来ません。 ダブルクリックすると、 Java JARファイル"hoge.jar"を起動できませんでした。 というメッセージが出ます。コンソールから java hoge.jar と実行すると、 Exception in thread "main" java.lang.NoClassDefFoundError: Hoge/jar Caused by: java.lang.ClassNotFoundException: hoge.jar at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) と出ます。 Macは使い始めで余計によくわかりません。よろしくお願いします。

    • ベストアンサー
    • Java
  • Oracle8i に接続しようと思うんですが、エラーが出ます。

    Oracle 8i に接続したいと思い、 C:\Oracle\Ora81\jdbc\lib に classes12.zip を置いています。 クラスパスの設定は、C:\Oracle\Ora81\jdbc\lib\classes12.zip としています。classes12 は oracle 9i 用を使っています。 ちなみに、OSはWin2000professional です。 // JDBC ドライバの登録 DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver() ); とすると、 Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/driver/Or acleDriver at DbTest.main(DbTest.java:16) のエラーが出て、 Class.forName("oracle.jdbc.driver.OracleDriver");  とすると、 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at DbTest.main(DbTest.java:19) というエラーが出ます。 誰かわかる人がいたら、教えてください.よろしくお願いします。

    • ベストアンサー
    • Java
  • JDBCのエラー

    ・jdk-1.5.0.16 ・mysql-4.0.26-win32 ・mysql-connector-java-3.1.14 をダウンロード、インストールして現在、Javaの勉強をしているものです。 JDBCについてなのですが、下記の通りにダウンロード、インストールを行いました。 1.mysql-connector-java-3.1.14.zipファイルをDLフォルダにDL 2.デスクトップに解凍 3.C直下にフォルダごと移動 4.C:直下に移動したmysql-connector-java-3.1.14フォルダのmysql-connector-java-3.1.14-bin.jarをCLASSPATHに追加 ファイルをコマンドプロンプトでコンパイルすると通るのですが、実行すると下記のエラーになります。 java.lang.ClassNotFoundException: org.git.mm.mysql.Driver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at jdbctest.main(jdbctest.java:6) 過去の質問などを見て環境変数の設定も行ったのですが、どうしてもうまくいきません。 google検索でmysql-connector-java-3.1.14-bin.jarファイルの置き場所を、 C:\mysql\lib\以下 C:\Program Files\Java\jdk1.5.0_16\lib\以下 C:\Program Files\Java\jre1.5.0_16\lib\ext\以下 等に変更してみても変化はありません。 何が問題なのか、ご教授いただければと思います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java実行時のメッセージについて

    50歳にてjavaを勉強しようとしているものです。 javaの本より例題を作成してみたのですが、うまくいきません。 javaをインストールしてjavacが正常でいざ実行した際、以下のメッセージが表示されました。何の意味かさっぱりわかりません。このサイトで質問するレベルではないかと思いますが、アドバイスいただければ幸いです。 作成したプログラムは class hello { public static void main(String[] args) { System.out.println("こんにちは"); } } javac ではエラー表示なし → C:\javabook\part1>javac Hello.java C:\javabook\part1> これを実行すると、 C:\javabook\part1>java Hello Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: he llo) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: Hello. Program will exit. と表示されます。 何がエラーとなっているのでしょうか?

    • ベストアンサー
    • Java