Postgres: не найден подходящий драйвер для JAR-файла jdbc

Моя программа затмения работает нормально. Однако, когда я пытаюсь скомпилировать его в файл JAR, я получаю эту ошибку:

java.sql.SQLException: не найден подходящий драйвер для jdbc:postgresql://10.0.0.19: 5432/fussballverein

Я добавил коннектор в свои java-файлы и экспортировал их в файл jar, это правильно?

Вот как выглядит мой jar-файл:

МояМодель.класс

МояМодель.java

MyControll.класс

MyControll.java

Моя панель.класс

Mypanel.java

postgresql-9.3-1101.jdbc3.jar

Мой фрейм.класс

Myframe.java

Когда я пытаюсь запустить его из командной строки, это выглядит так:

java -jar Gebauer_Laurenz.jar 10.0.0.19 имя пользователя пароль fussballverein

Я получаю сообщение об ошибке раньше. Вот мой код; было бы здорово, если бы кто-то мог помочь.

public void auführen () throws SQLException, ClassNotFoundException{
    //Connection Objekt
    Connection con = null;
    System.out.println(server+""+db+""+user+""+pw);
    try {
        //Class.forName("org.postgresql.Driver");
    //In DriverManager werden die Verbindungsdaten eingetragen so das eine Verbindung hergestellt werden kann.
            con = DriverManager.getConnection("jdbc:postgresql://"+server+":5432/"+db+"",""+user+"",""+pw+"");

person user3566311    schedule 23.04.2014    source источник
comment
Баночка PgJDBC (postgresql-.....jar) должна быть на вашем CLASSPATH.   -  person Craig Ringer    schedule 24.04.2014


Ответы (1)


Здесь есть две потенциальные проблемы: неправильный путь к классам и использование драйвера JDBC 3 (вместо драйвера JDBC 4) без явной загрузки класса Driver.

Проблема 1: путь к классам

Зависимые банки не должны быть включены в вашу собственную банку, они должны быть размещены рядом с вашей собственной банкой, а затем указаны в Class-Path в файле MANIFEST.MF.

Например, ваш макет может быть:

your.jar
postgresql-9.3-1101.jdbc3.jar

Тогда MANIFEST.MF из your.jar должна иметь запись:

Class-Path: postgresql-9.3-1101.jdbc3.jar

Дополнительные сведения см. в этом руководстве.

Проблема 2: драйвер JDBC 3

Драйвер, который вы используете, является драйвером JDBC 3. Автозагрузка драйверов появилась только в JDBC 4 (Java 6). Автозагрузка JDBC 4 работает, когда драйверы объявляют свой класс (ы) драйвера, предположительно драйвер JDBC 3 не имеет этого файла. В вашем коде закомментировано Class.forName..., и драйвер не будет загружен.

Если вы используете Java 6 или выше, обновите драйвер до JDBC 4 (Java 6) или JDBC 4.1 (Java 7).

person Mark Rotteveel    schedule 24.04.2014