android JDBC mysql java 连接器应用程序:preDexDebug
Posted
技术标签:
【中文标题】android JDBC mysql java 连接器应用程序:preDexDebug【英文标题】:android JDBC mysql java connector app:preDexDebug 【发布时间】:2016-01-16 11:14:33 【问题描述】:我正在尝试学习如何使用 JDBC 将应用程序连接到 mysql 数据库。
我正在使用 android Studio。
我从 MySQL 网站下载了“mysql-connector-java-5.1.37”。
只是为了将“mysql-connector-java-5.1.37-bin.jar”放在 Hello World 应用程序的 libs 文件夹中并编译我收到:
错误:任务 ':app:preDexDebug' 执行失败。 com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' 完成非零退出值 1
build.gradle:
apply plugin: 'com.android.application'
android
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig
applicationId "br.com.myaplication.helloworld"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
【问题讨论】:
你如何构建你的项目?使用 gradle 构建?你应该试试 gradle clean build! 我只是按下了android studio的运行按钮。我怎么做? (对不起,我是新手) 真实项目请不要这样做:***.com/questions/15853367/… @MorrisonChang thx 的帮助,但我在使用网络服务时也遇到了问题 hahahhaa.. 我也有同样的问题。有人找到解决方案了吗? 【参考方案1】:尝试同步您的项目
Tools -> Android -> Sync Project with Gradle Files
然后重建你的项目:
build -> rebuild project
【讨论】:
您在构建项目时收到您发布的错误信息?您能否在构建时发布完整的 gradle 日志 是的,在构建时.. 不适合这里,但在这里开始错误:app:processDebugJavaRes UP-TO-DATE :app:compileDebugJavaWithJavac UP-TO-DATE :app:compileDebugNdk UP-TO-DATE : app:compileDebugSources UP-TO-DATE :app:preDexDebug AGPBI: "kind":"simple","text":"warning: Ignoring InnerClasses attribute for an anonymous inner class","sources":[] AGPBI : "kind":"simple","text":"(com.mysql.jdbc.Connection$1) 不带有","sources":[] AGPBI: "kind": "simple","text":"关联的 EnclosureMethod 属性。【参考方案2】:我遇到了同样的问题,问题出在 mysql-connector-java-5.1.37.jar 文件中。我从here 下载了一个旧版本 (mysql-connector-java-3.0.17-ga-bin.jar) 并且工作得很好。
要获得连接,请使用:
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connection = "jdbc:mysql://"+ your_ip + ":"+ your_port +"/"+ database_name;
conn = DriverManager.getConnection(connection, user, pass);
以防万一,别忘了在你的 build.gradle 中编译它:
dependencies
//other stuff
compile files('libs/mysql-connector-java-3.0.17-ga-bin.jar')
PD:这仅在您使用来自和 AsyncTask 的连接时才有效
【讨论】:
【参考方案3】:由于分布式mysql-connector-java-5.1.37-bin.jar是针对Java1.8编译的,目前Android dex编译器无法识别。
$ javap -v com/mysql/jdbc/JDBC42Helper.class| grep "major version"
major version: 52
另一方面,mysql-connector-java-5.1.36.jar 是为 Java1.6 编译的。
$ javap -v com/mysql/jdbc/JDBC4Connection.class |grep "major version"
major version: 50
5.1.37 supports JDBC4.2,所以需要Java1.8。
【讨论】:
以上是关于android JDBC mysql java 连接器应用程序:preDexDebug的主要内容,如果未能解决你的问题,请参考以下文章
android JDBC mysql java 连接器应用程序:preDexDebug
Android + MySQL 使用 com.mysql.jdbc.Driver
如何将 Mysql JDBC 驱动程序导入到 android studio