找不到适合jdbc的驱动程序:postgresql://192.168.1.8:5432 / NexentaSearch

我写了下面的Java程序

import java.io.*; import java.util.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.*; public class Sample { public static void main (String[] args) throws IOException { int CountComputers; FileInputStream fstream = new FileInputStream( "/export/hadoop-1.0.1/bin/countcomputers.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); String result=br.readLine(); CountComputers=Integer.parseInt(result); input.close(); fstream.close(); Connection con = null; Statement st = null; ResultSet rs = null; String url = "jdbc:postgresql://192.168.1.8:5432/NexentaSearch"; String user = "postgres"; String password = "valter89"; ArrayList<String> paths = new ArrayList<String>(); try { con = DriverManager.getConnection(url, user, password); st = con.createStatement(); rs = st.executeQuery("select path from tasks order by id"); while (rs.next()) { paths.add(rs.getString(1)); }; PrintWriter zzz = null; try { zzz = new PrintWriter(new FileOutputStream("/export/hadoop-1.0.1/bin/readwaysfromdatabase.txt")); } catch(FileNotFoundException e) { System.out.println("Error"); System.exit(0); } for (int i=0; i<paths.size(); i++) { zzz.println("paths[i]=" + paths.get(i) + "\n"); } zzz.close(); } catch (SQLException e) { System.out.println("Connection Failed! Check output console"); e.printStackTrace(); } } } 

我编译这个程序并创build了jar文件

 ./javac -classpath /folder/postgresql-8.4-703.jdbc3.jar -d /Samplejavaprogram/classes /Samplejavaprogram/src/Sample.java ./jar -cvf /Samplejavaprogram/Sample.jar -C /Samplejavaprogram/classes/ . 

Jar有以下清单文件

 Manifest-Version: 1.0 Created-By: 1.7.0_06 (Oracle Corporation) Main-Class: Sample Class-Path: /folder/postgresql-8.4-703.jdbc3.jar 

还包含文件/folder/postgresql-8.4-703.jdbc3.jar。 我通过一个命令启动了Sample.jar

 ./java -jar -Djava.library.path=/opt/jdk1.7.0_06/lib /Samplejavaprogram/Sample.jar 

结果我收到了以下信息

 Connection Failed! Check output console java.sql.SQLException: No suitable driver found for jdbc:postgresql://192.168.1.8:5432/NexentaSearch at java.sql.DriverManager.getConnection(DriverManager.java:604) at java.sql.DriverManager.getConnection(DriverManager.java:221) at org.myorg.Sample.main(Sample.java:33) 

我从地址为192.168.1.10的主机启动了文件,在主机192.168.1.8上启动了文件。 帮助消除错误。

您正在使用JDBC 3驱动程序。 JDBC 4驱动程序由DriverManager自动加载,而JDBC 3驱动程序则不是。 所以你需要调用

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

一次在你的应用程序中,(在调用DriverManager#getConnection )。


或者,您可以使用此处不需要上述方法调用的JDBC 4 PostgreSQL驱动程序。

只需使用jar命令来提取应用程序与数据库服务器建立连接所需的文件即可。 例如jar -xf jdbc_file。 用javac -cp编译它。 并用java -cp运行它。

就是这样。 它会工作。