2017-08-24 2 views
0

助けてくれてありがとう、私はここに完全なnoobですが、勉強しようとしています。 以下のコードは単にデータベースへの接続を作成しようとしています。私は戻って、このエラーを取得しています:org.postgres.Driverクラス例外 - 初心者

java.lang.ClassNotFoundException: org.postgres.Driver 
    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.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at CreateDB.main(CreateDB.java:11) 
java.lang.ClassNotFoundException: org.postgres.Driver 

は私が出くわすソリューションは、ライブラリをチェックすることですオンライン調査したパスを構築するために追加されます。私は私が(私が考える)ことを確認することができます。これを行うには、prject - > Properties - > Java Build Path - >外部JARSを右クリックし、 "... \ eclipse-workspace \ libraries \"にあるpostgresql - 42.41.4..jarに移動してください。 プロジェクト内の参照ライブラリの下にライブラリが追加されていることがわかります。 現時点では手がかりになっていません。どんな援助も本当に感謝しています。 org.postgresql.Driver

は、私がここにhttps://www.tutorialspoint.com/postgresql/postgresql_java.htm

import java.sql.Connection; 
import java.sql.DriverManager; 

public class CreateDB { 
    public static void main(String Args[]) { 
     Connection c = null; 
     try { 
      Class.forName("org.postgres.Driver"); 
      c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12"); //creates connection with U&P 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.err.println(e.getClass().getName() +": " + e.getMessage()); 
      System.exit(0); 
     } 
     System.out.println("Database opened successfully"); 
    } 
} 
+0

Java 6以来、 'Class.forName()'は不要になっています。 –

答えて

1

正しいドライバの名前があるから勉強しています。だからあなたのコードは次のようになります。

import java.sql.Connection; 
import java.sql.DriverManager; 

public class CreateDB { 
    public static void main(String args[]) { 
     Connection c = null; 
     try { 
      Class.forName("org.postgresql.Driver"); 
      c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12"); //creates connection with U&P 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.err.println(e.getClass().getName() +": " + e.getMessage()); 
      System.exit(0); 
     } 
     System.out.println("Database opened successfully"); 
    } 
} 

偽のドライバ名が渡された名前を持つクラスがクラスパスに見つかりませんでしたので、ClassNotFoundExceptionを投げるためにJavaの原因となります。 Java 6以降では、Class.forName()経由のドライバのロードは不要です。a_horse_with_no_nameのように彼のコメントで指摘されています。

+1

またはこれ以上不要なClass.forName()を除いてください。 –

+1

@a_horse_with_no_nameそれは本当です。それが失敗の理由だったので私はそれを説明した。 –