Подтвердить что ты не робот

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

Я запускаю Eclipse в Windows.

Следуя этот учебник Я загрузил JDBC4, добавил его в мой путь сборки, используя Project > Properties > add 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, веб-разработке, поэтому был бы оценен простой ответ.

4b9b3361

Ответ 1

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

Ответ 2

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

Grandle

// 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>

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Вместо:

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

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

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

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

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