我目前正试图建立一个连接,从我的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中的钩子。
请与操作系统维护人员联系。