11

Debian 6.0 サーバーに PostgreSQL 用の JDBC ドライバーをインストールする方法がわかりません。ドライバー .jar を次のディレクトリに移動しました。

/usr/local/pgsql/share/java/postgresql.jar. 

次に、チュートリアルでは、このコードの使用について説明します。

Class.forName("org.postgresql.Driver");

しかし、私はpostgreSQLが初めてなので、この行をどこに置くべきか、またはこれが正しいかどうかさえわかりません。

私の質問は、jar ファイルをこの場所に移動する以外に、postgreSQL インストールに JDBC ドライバーをインストールするために実際に何をする必要があるかということです。


編集:これは私のセットアップです:

サーバー 1: Tomcat + SOLR

サーバー 2: JDBC ドライバーを使用する PostgreSQL

サーバー 1 の SOLR は、JDBC ドライバーを介してサーバー 2 の postgreSQL にクエリを実行します。

4

4 に答える 4

7

PostgreSQLドライバーをtomcat\libフォルダーにインストールすることをお勧めします。ドライバjarをPATH_TO_TOMCAT\libにコピーするだけです

クラスローダーの地獄で終わる可能性があるため、システムのCLASSPATHに何かを追加することはお勧めできません。これは、jar /classpathhellに到達する方法の例です。

  • 現在のアプリがpostgres9.1を使用していて、システムCLASSPATHでドライバーをセットアップするとします。
  • そのボックスで別のアプリを実行することにしました。このアプリは、バージョン9.2などの新しいバージョンのpostgresと通信します。
  • システムクラスパスを使用しているため、アプリランチャースクリプトがCLASSPATH = ""を設定してシステムクラスパスを空にするか、カスタムクラスローダーを使用しない限り、SYSTEMクラスパスがアプリケーションクラスパスよりも優先される傾向があるため、app2は古いドライバーを使用することになります。親ファーストクラスのロードは行いません。

http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.htmlを参照してください

于 2012-12-13T19:30:05.337 に答える
3

そのドライバーはクラスパス上になければなりません。このコマンドを使用できます

java -cp /usr/local/pgsql/share/java/postgresql.jar my.app.MainClass

または、ライブラリをプロジェクト構造にコピーできます。

次に、チュートリアルにあるように接続を作成できます...

于 2012-12-13T12:41:19.570 に答える
2

すべてのパッケージをインストールします。

# apt-get install libpostgresql-jdbc-java libpostgresql-jdbc-java-doc

すべてのユーザーに Java 環境を設定するには、/etc/environment を追加/編集します。

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
CLASSPATH=".:/usr/share/java/mysql.jar:/usr/share/java/postgresql-jdbc4.jar"

: JDK で /usr/lib/jvm/java-8-openjdk-amd64 を変更します。

: postgresql-jdbc3 を使用する場合は、/usr/share/java/postgresql-jdbc4.jar を /usr/share/java/postgresql.jar に置き換えます。

次のコードを使用して接続をテストします。

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

class TestDB {

    /*

      /usr/share/java

      http://dev.mysql.com/doc/connector-j/5.1/en/

      https://jdbc.postgresql.org/documentation/documentation.html

    */

   static Connection conn = null;   

   public static void main(String[] args) {
      // PostgreSQL

      try {

         System.out.println("Loading Class org.postgresql.Driver");

         Class.forName("org.postgresql.Driver");

         System.out.println("Loading org.postgresql.Driver Successful");

         String url = "jdbc:postgresql://localhost/database";

         Properties props = new Properties();

         props.setProperty("user","user");

         props.setProperty("password","password");

         props.setProperty("ssl","true");

         conn = DriverManager.getConnection(url, props); 

         // or

         url = "jdbc:postgresql://localhost/database?user=user&password=password&ssl=true";

         Connection conn = DriverManager.getConnection(url);

         // Do something with the Connection

         System.out.println("Test Connection Successful");

      } catch (SQLException ex) {

         // handle any errors

         System.out.println("SQLException: " + ex.getMessage());

         System.out.println("SQLState: " + ex.getSQLState());

         System.out.println("VendorError: " + ex.getErrorCode());

      } catch (ClassNotFoundException ex) {

         System.out.println("Class Not Found: " + ex.getMessage());

      }

   }

}

:構成に合わせてデータベース、ユーザー、パスワードを変更してください

http://www.garasiku.web.id/web/joomla/index.php/java/112-debian-jessie-installing-openjdk-8-mysql-jdbc-and-postgresql-jdbc

于 2016-11-01T04:33:43.530 に答える
1

IDE (アイデア、Eclipse など) で、そのパスをライブラリとして追加する必要があります。

または、それを含む CLASSPATH 変数を定義すると、コマンドラインからコンパイルして実行できます。

export CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar
javac -classpath $CLASSPATH MyDBApp.java
java -cp $CLASSPATH MyDBApp
于 2012-12-13T13:18:42.767 に答える