it-swarm.com.de

Kein geeigneter Treiber für jdbc: postgresql: //192.168.1.8: 5432/NexentaSearch gefunden

Ich schrieb nach dem Java-Programm

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();
            }
        }
}

Ich habe dieses Programm kompiliert und die JAR-Datei erstellt

./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 hat die folgende Manifestdatei

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

enthält auch die Datei /folder/postgresql-8.4-703.jdbc3.jar. Ich habe Sample.jar mit einem Befehl gestartet

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

und als Ergebnis erhielt ich die folgenden Nachrichten

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)

Ich habe die Datei von einem Host mit der Adresse 192.168.1.10 gestartet und auf einem Host mit der Adresse 192.168.1.8 wurde sie normal ausgeführt. Beheben Sie einen Fehler.

12
user2328488

Sie verwenden einen JDBC 3-Treiber. JDBC 4-Treiber werden automatisch von der DriverManager geladen, JDBC 3-Treiber jedoch nicht. Deshalb musst du aufrufen

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

einmal in Ihrer Anwendung (vor dem Aufruf von DriverManager#getConnection).


Alternativ können Sie den JDBC 4 PostgreSQL-Treiber von here verwenden, der den obigen Methodenaufruf nicht erfordert.

17
Reimeus

Verwenden Sie DriverManager.registerDriver(new org.postgresql.Driver());

1
pedram bashiri

Verwenden Sie einfach den Befehl jar, um die Dateien zu extrahieren, die Ihre Anwendung zum Herstellen der Verbindung mit dem Datenbankserver benötigt. z.B. jar -xf jdbc_file. Kompilieren Sie es mit dem javac -cp. und führen Sie es mit dem Java -cp aus.

Und das ist es. Es wird klappen.

0
user4064927