我目前正试图建立一个连接,从我的Android应用程序到MySQL服务器运行在我的树莓pi。
我把这个库正确地添加到android studio中,方法是将它添加到模块菜单中的dependencys中。
我在程序中实现了这样的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){

        }
    }

每次我启动程序,我都会得到一个类未找到错误。
上面写着:
W/System:ClassLoader引用了未知路径:System/framework/mediatek-cta.jar
I/System.out:e:java.lang.ClassNotFoundException:com.mediatek.cta.CtaHttp
我试着用不同的方法寻找这个问题,但我不知道问题在哪里。
我甚至不知道cta课是什么。也许有人能帮我。

最佳答案

CTA=中国型式认证,这是联发科为测试目的在Android中增加的功能。
您的错误发生在DriverManager.getConnection()中,它可能使用Android的libcore中的okhttp、apache http或Socket类来执行请求。
联发科修补了这些库以添加对HTTP请求的控制。它尝试动态加载在/system/framework/mediatek-cta.jar中定义的一些方法,但它可能不存在,或者在android设备的文件系统上不可访问。
我看到5种解决方案:
通过OTA或adb remount添加适当的mediatek-cta.jar(如果您在自定义/根ROM上)
使用具有相同应用程序源代码的另一个设备(基于非中介的设备不会出现此问题)。
通过官方的OTA更新升级你的操作系统,希望设备制造商能解决这个问题。
通过以下修改自行重建和自定义操作系统
确保将medatek cta添加到产品包和产品启动罐中
删除libcore、okhttp和apache http中的钩子。
请与操作系统维护人员联系。

10-05 23:42