开发者社区> 程序员诗人> 正文

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

简介: 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HaaS UI基础教学十:IoT平台连接
阿里云智能物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
323 0
C++常见gcc编译链接错误解决方法
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例:-Wl,-Bstatic -lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest("-Wl"表示是传递给链接器ld的参数,而不是编译器gcc/g++的参数。
1777 0
flex 1119错误 找不到属性 static 解决方法,编译选项中选中 不启用rsl
flex 1119错误 找不到属性 static 解决方法,编译选项中选中 不启用rsl
463 0
【技术贴】小米otg线连接U盘文件管理器找不到U盘内容的解决办法
文件管理--点击中间 【sd 卡】,然后下面0.5cm位置左上方会有个 【sd卡】这几个字,你用手点一下,然后会弹出选择磁盘。。就能看到U盘啦!!截图如下。 不支持热插拔,一定要在设置--存储--卸载你的U盘。
1370 0
(转载) VS编译duilib项目时候的错误解决方法整理
原文地址:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.
988 0
+关注
程序员诗人
一个会写诗的程序员
828
文章
14
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载