PostgreSQL - 安装JDBC驱动程序

时间:2012-12-13 12:36:31

标签: java sql postgresql jdbc debian

我很难弄清楚如何在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 个答案:

答案 0 :(得分:6)

最好将PostgreSQL驱动程序安装到tomcat \ lib文件夹中。只需将驱动程序jar复制到PATH_TO_TOMCAT \ lib

即可

将内容添加到系统CLASSPATH不是一个好主意,因为你可以在类加载器地狱中结束。这是一个如何在jar / classpath地狱中结束的例子。

  • 假设当前应用使用postgres 9.1并在系统CLASSPATH上设置驱动程序
  • 你决定在那个盒子上运行另一个应用程序,它与较新版本的postgres进行对话,比如版本9.2
  • 因为您正在使用系统类路径应用程序2将最终使用旧驱动程序,因为SYSTEM类路径往往优先于应用程序类路径,除非应用程序启动程序脚本将CLASSPATH =“”设置为清空系统类路径或使用自定义类加载器,不进行父级优先加载。

请参阅http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

答案 1 :(得分:3)

该驱动程序必须在您的类路径上。您可以使用此命令

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

或者您可以将库复制到项目结构中。

然后你可以像教程说的那样创建连接......

答案 2 :(得分:1)

在IDE(Idea,Eclipse等)中,您需要将该路径添加为库。

或者,如果定义包含该变量的CLASSPATH变量,则可以从命令行编译和执行。

export CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar
javac -classpath $CLASSPATH MyDBApp.java
java -cp $CLASSPATH MyDBApp

答案 3 :(得分:1)

安装所有包:

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

要为所有用户设置Java环境,请添加/ edit / 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