Соединение JDBC Android приводит к исключению ctahttp - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я пытаюсь установить соединение из моего приложения для Android с сервером MySQL, работающим на моем Raspberry Pi.

Я правильно добавил библиотеку в Android Studio, добавив ее в зависимости в меню модуля.

Я внедрил JDBC-метод, подобный этому, в свою программу.

 public void readDatabase(String query)throws  Exception{

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            connection = DriverManager.getConnection("jdbc:mysql://192.168.0.101/mydb","user","mypassword");

            statement = connection.createStatement();

            resultSet = statement.executeQuery(query);

            System.out.println(resultSet);

        }catch (ClassNotFoundException e){

            e.printStackTrace();

        }finally {
            close();
        }

    }

    private void close(){
        try {
            if (resultSet != null){
                resultSet.close();
            }

            if (statement != null){
                statement.close();
            }

            if ( connection != null){
                connection.close();
            }
        }catch (Exception e){

        }
    }

Каждый раз, когда я запускаю программу, я получаю ошибку класса not found.Он говорит:

W / System: ClassLoader ссылается на неизвестный путь: system / framework / mediatek-cta.jar I / System.out: e: java.lang.ClassNotFoundException: com.mediatek.cta.CtaHttp

Я пытался по-разному искать проблему, но не могу понять, где проблема.
Я даже не знаю, что такое класс cta.Может быть, кто-то может помочь мне здесь.

1 Ответ

0 голосов
/ 04 марта 2019

CTA = утверждение типа Китая , это то, что Mediatek добавляет в Android для целей тестирования.

Ваша ошибка происходит в DriverManager.getConnection () , которыйвероятно, использует okhttp , apache-http или Socket класс в libcore Android для выполнения своих запросов.

Mediatek пропатчил эти библиотеки для добавления контроля HTTP-запросов.Он пытается динамически загрузить некоторые методы, определенные в / system / framework / mediatek-cta.jar , но он, вероятно, отсутствует или недоступен в файловой системе вашего устройства Android.

Я вижу 5 решений:

  1. Добавьте соответствующий mediatek-cta.jar через OTA или через adb remount, если вы находитесь на пользовательском / рутованном ПЗУ
  2. Используйте другое устройство с исходным кодом того же приложения (у устройства без Mediatek такой проблемы не будет).
  3. Обновление вашей ОС через официальное обновление OTA и надеюсь, что производитель устройства устранил проблему.
  4. Перестройте и настройте ОС самостоятельно с помощью следующегомодификации
    • Убедитесь, что medatek-cta добавлен в PRODUCT_PACKAGES и PRODUCT_BOOT_JARS
    • Удалите перехватчики в libcore, okhttp и apache-http.
  5. Контакт Поддержка вашей ОС Поддержка .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...