Android连接 Mysql: 解决mysql-connector-java驱动编译时Dex cannot parse version 52 byte code...等错误

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Error:Error converting bytecode to dex:Cause: Dex cannot parse version 52 byte code.
Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the 'java' gradle plugin in a library submodule add 
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
to that submodule's build.gradle file.
...while parsing com/mysql/jdbc/JDBC42CallableStatement.class
Error:1 error; aborting
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: Unable to pre-dex '/Users/jack/.gradle/caches/modules-2/files-2.1/mysql/mysql-connector-java/5.1.38/dbbd7cd309ce167ec8367de4e41c63c2c8593cc5/mysql-connector-java-5.1.38.jar' to '/Users/jack/Documents/h5perf/TestUCWebView/app/build/intermediates/transforms/dex/debug/folders/1000/10/mysql-connector-java-5.1.38_257c5be60bd0dfff54a4f47de74485ea5ba8c67e'

做一个简单的数据库应用,打算直接把客户端和数据库连接起来,省去用java或者php去写后端接口程序。因此想到了在Android端用mysql-connector-java驱动包直接访问服务器上的数据库(首先说明这是可行的)。 于是去Mysql官网找到了最新版的jar包下载,直接把mysql-connector-java-5.1.40-bin.jar(开发版最新为6.0.5)引入Android工程,(我用的是Android Studio)Build没有任何问题,但是在构建APK的时候出错了,错误也就是文章开头那个。 错误的意思大概是这个包不支持Java8(52是Java8的字节码版本号),需要你去build.gradle里手动修改项目的兼容性到1.7。网上查了很多很多资料都是这个解决办法,然而并无用。

还尝试了6.0.5的开发版、降低JDK版本等,仍旧报错。然后我在Intellij IDEA下建了个普通的Java工程,连接数据库的代码不变,同样引入jar包,居然成功了(能够远程连接我云服务器上的数据库并进行数据操纵)。
因此,看来这并不是什么Java版本的问题,而是mysql-connector-java-5.1.40-bin.jar这个版本的驱动和Android编译不兼容的问题,最后,通过Google找到了解决办法。
直接用低版本的比如mysql-connector-java-5.1.36-bin.jar引入Android工程即可,成功立竿见影。

    // https://mvnrepository.com/artifact/mysql/mysql-connector-java
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.36'

最后附上如何连接Mysql数据库并进行增删查改的Java代码: http://blog.csdn.net/lxp116/article/details/9175551

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL
若依框架----如何降低mysql驱动版本?
若依框架----如何降低mysql驱动版本?
29 3
|
1月前
|
数据采集 小程序 数据可视化
智慧校园电子班牌管理系统源码 Java Android原生
家长通过家长小程序端随时了解孩子在校的情况,实时接收学生的出勤情况,学生到校、离校时间。随时了解学生在校的表现、学生成绩排名,及时与教师沟通,关注孩子的健康成长。
18 0
智慧校园电子班牌管理系统源码 Java Android原生
|
3月前
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
40 0
|
24天前
|
XML Java Maven
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
25 0
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
|
3天前
|
小程序 Java 数据挖掘
Java校园智慧管理云平台源码 小程序+android电子班牌系统
智慧校园技术架构 ❀后端:Java ❀框架:springboot ❀前端页面:vue +element-ui ❀小程序:小程序原生开发 ❀电子班牌:Java Android
14 0
|
1月前
|
安全 NoSQL Java
从安卓转到Java开发,我吃透了这份pdf,终于4面拿下美团offer
先说说个人情况吧,坐标广州,16年从一所普通二本大学毕业,毕业后在一家小公司干android开发,年薪在15w左右。转Java的契机是认识到了一个朋友,做Java后台的,经常跟他聊相关的内容,经过慎重考虑及个人的发展规划,所以就决定转型了。
|
2月前
|
Java 物联网 Android开发
Android 12 蓝牙适配 Java版(下)
Android 12 蓝牙适配 Java版(下)
|
2月前
|
传感器 Java 定位技术
Android 12 蓝牙适配 Java版(上)
Android 12 蓝牙适配 Java版(上)
|
2月前
|
Java
【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
18 0
|
2月前
|
网络协议 关系型数据库 MySQL
Android Termux安装MySQL,通过内网穿透实现公网远程访问
Android Termux安装MySQL,通过内网穿透实现公网远程访问