java.lang.ClassNotFoundException: org.postgresql.Driver, Android

Я использую Eclipse в Windows.

Следующийэтот урок Я скачал JDBC4, добавил его в путь сборки, используя Project & gt; Свойства & gt; добавить External JAR, просмотрел файл, все заработало (.classpath файл показывает правильный путь к lib).

Пакет появляется в моей папке со ссылками на библиотеки, поэтому я продолжаю учебник.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    ....

    public void open ()
        {
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try {
        conn = DriverManager.getConnection(url, username, password);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

Я думаю, что это будет так просто, но меня поразила эта трассировка большого длинного стека, начиная с

    java.lang.ClassNotFoundException: org.postgresql.Driver

(Могу предоставить больше при необходимости)

Я старалсяinclude org.postgresql.*; но это тоже не помогло. Я также попробовал JDBC3, но там тоже не повезло.

я смотрел наДрайвер JDBC PostgreSQL с Android который дал расплывчатый ответ, говоря, что мне было бы лучше использовать HTTP + JSON. Которым я никогда не пользовался.

Я новичок в Android, postgresql, веб-разработке, так что простой ответ был бы признателен.

 MH.05 июн. 2012 г., 21:22
Вы поместили .jar вlib папка вместоlibs, случайно? посколькуADT r17Библиотеки, на которые ссылаются внешние источники, будутnot быть упакованным в .apk. В результате ваш проект будет хорошо скомпилирован, но во время выполнения вы столкнетесь сNoClassDefFoundError из-за отсутствующих библиотек. Между прочим, на SO много похожих вопросов; напримерthis one.
 user143804805 июн. 2012 г., 21:33
Получил это на работу. Многому научиться: P Спасибо!

Ответы на вопрос(6)

Загрузка и добавление JAR-файла JDBC в путь сборки используемого вами инструмента может быть временным решением, поскольку ни одно из перечисленных выше решений не сработало в моем случае.

но ошибка, которую я сделал, была зависимость postgre, которую я добавил только в разделе плагинов; После добавления зависимости postgre (ниже) в раздел зависимостей проекта это сработало.

<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>    
</dependency>
 14 дек. 2018 г., 17:31
Версияpostgresql:postgresql:9.1-901-1.jdbc4 очень старый Последняя версияorg.postgresql:postgresql:42.2.5, увидетьsearch.maven.org/search?q=g:org.postgresql%20AND%20a:postgresql

Драйвер JDBC PostgreSQL недоступен, когда загрузчик классов пытается загрузить его. Вы должны правильно добавить его в свой CLASSPATH.

Если это работает в Eclipse, то это потому, что добавление JAR к пути сборкиis добавив его в CLASSPATH. Вы должны понимать, как работает CLASSPATH без тренировочных колес Eclipse.

Вам необходимо добавить JDBC-драйвер PostgreSQL в ваш проект, как указано вMvnrepository.

Gradle:

// http://mvnrepository.com/artifact/postgresql/postgresql
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4'

Maven:

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.0-801.jdbc4</version>
</dependency>

Вы также можетескачать JAR и импортировать в ваш проект вручную.

ПРИМЕЧАНИЕ. Компиляция, используемая в этом ответе, не рекомендуется. Заменить на реализацию согласно3.

 10 янв. 2018 г., 17:37
@Mygod Спасибо, я обновил свою ссылку.
 10 янв. 2018 г., 10:15
Вы уверены, что это правильный выбор?mvnrepository.com/artifact/org.postgresql/postgresql

Предполагая, что ваши зависимости правильно настроены (см.libs directory in Android SDK version 17 or above, как указано в комментарии), вы должны быть в состоянии заставить работать драйвер 9.2, зарегистрировав его явно в диспетчере драйверов.

Вместо:

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

Использование:

DriverManager.register(new org.postgresql.Driver());

(Я также пытался использовать банку 9.3-1100-jdbc41, но это не сработало.)

Обратите внимание, что, какобъяснил Крейг Рингер в ответе на двойной вопросиспользование JDBC от Android редко является хорошей идеей, поскольку соединения JDBC не очень хорошо подходят для шаблонов использования сети, обычно используемых устройствами Android.

Вы должны поместить jar-пакет в папку lib (WebContent-WEB-INF-lib) и щелкнуть правой кнопкой мыши на jar package-build path-add to build path

Ваш ответ на вопрос