我目前正在尝试建立从我的Android应用到树莓派上运行的MySQL服务器的连接。
我通过将库添加到模块菜单中的依赖项中,将库正确添加到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){
}
}
每次启动程序时,都会出现未找到类的错误。 它说:
W / System:ClassLoader引用的未知路径:system / framework / mediatek-cta.jar I / System.out:e:java.lang.ClassNotFoundException:com.mediatek.cta.CtaHttp
我试图以不同的方式搜索问题,但我不知道问题出在哪里。
我什至不知道cta类是什么。也许有人可以在这里帮助我。
答案 0 :(得分:1)
当我一次遇到相同的消息时,我也首先被它误导了。 但是,事实证明您无法在主线程上打开套接字或其他网络连接(请参见https://developer.android.com/training/basics/network-ops/connecting#intro-net-ops)。这可能也是您遇到的问题。
正如vhamon所指出的那样,该消息本身似乎只是用于测试目的的信息。
答案 1 :(得分:0)
CTA =中国类型批准,这是联发科在Android中添加的用于测试的目的。
您的错误发生在可能使用 okhttp , apache-http 或 Socket 的 DriverManager.getConnection()中Android的 libcore 中的>类来执行其请求。
Mediatek修补了这些库,以添加对HTTP请求的控制。它会尝试动态加载 /system/framework/mediatek-cta.jar 中定义的某些方法,但在Android设备的文件系统上可能不存在或无法访问。
我看到5种解决方案:
答案 2 :(得分:0)
将此权限添加到AndroidManifest,希望能有所帮助)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />