Android JDBC连接导致ctahttp异常
Posted
技术标签:
【中文标题】Android JDBC连接导致ctahttp异常【英文标题】:Android JDBC connection results in ctahttp exception 【发布时间】:2019-07-04 10:05:11 【问题描述】:我目前正在尝试建立从我的 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 类是什么。也许有人可以在这里帮助我。
【问题讨论】:
有什么安全的方法可以解决这个问题吗? 【参考方案1】:CTA = 中国型式批准,这是联发科在 Android 中添加的用于测试目的的内容。
您的错误发生在可能使用 okhttp、apache-http 或 Socket 的 DriverManager.getConnection() 中> Android 的 libcore 中的类来执行它的请求。
Mediatek 修补了这些库以添加对 HTTP 请求的控制。它尝试动态加载 /system/framework/mediatek-cta.jar 中定义的一些方法,但它可能在您的 android 设备的文件系统上不存在或无法访问。
我看到了 5 个解决方案:
-
添加适当的 mediatek-cta.jar 通过 OTA 或通过 adb remount 如果您在自定义/根 ROM 上
使用具有相同应用程序源代码的另一台设备(非基于 Mediatek 的设备不会出现该问题)。
通过官方 OTA 更新升级您的操作系统,希望设备制造商解决此问题。
自行重建和自定义操作系统并进行以下修改
确保将 medatek-cta 添加到 PRODUCT_PACKAGES 和 PRODUCT_BOOT_JARS
移除 libcore、okhttp 和 apache-http 中的钩子。
联系您的操作系统维护人员的支持。
【讨论】:
【参考方案2】:因为我曾经遇到过同样的消息,所以我首先被它误导了。 但是,事实证明您无法在主线程上打开 Socket 或其他网络连接(请参阅https://developer.android.com/training/basics/network-ops/connecting#intro-net-ops)。这也可能是您的问题。
正如 vhamon 所指出的,这条消息本身似乎只是用于测试目的的信息。
【讨论】:
【参考方案3】:将此权限添加到 AndroidManifest,希望对您有所帮助)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【讨论】:
以上是关于Android JDBC连接导致ctahttp异常的主要内容,如果未能解决你的问题,请参考以下文章