[英]android JDBC mysql java connector app:preDexDebug
I'm trying to learn how to use the JDBC to connect a application to a MySQL database.我正在尝试学习如何使用 JDBC 将应用程序连接到 MySQL 数据库。
I'm using the Android Studio.我正在使用 Android Studio。
I downloaded "mysql-connector-java-5.1.37" from the MySQL website.我从 MySQL 网站下载了“mysql-connector-java-5.1.37”。
Just for put the "mysql-connector-java-5.1.37-bin.jar" in libs folder of a Hello World application and compile I receive :只是为了将“mysql-connector-java-5.1.37-bin.jar”放在Hello World应用程序的libs文件夹中并编译我收到:
Error:Execution failed for task ':app:preDexDebug'.
错误:任务 ':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'' finished with non-zero exit value 1
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
the build.gradle: 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'
}
Try to sync your project Tools -> Android -> Sync Project with Gradle Files
尝试同步您的项目
Tools -> Android -> Sync Project with Gradle Files
And then rebuild your project: build -> rebuild project
然后重建你的项目:
build -> rebuild project
I had the same issue and the problem was in the mysql-connector-java-5.1.37.jar file.我有同样的问题,问题出在 mysql-connector-java-5.1.37.jar 文件中。 I downloaded an older version (mysql-connector-java-3.0.17-ga-bin.jar) from here and worked like a charm.
我从这里下载了一个旧版本 (mysql-connector-java-3.0.17-ga-bin.jar) 并且工作得很有魅力。
To get the connection use:要获得连接使用:
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connection = "jdbc:mysql://"+ your_ip + ":"+ your_port +"/"+ database_name;
conn = DriverManager.getConnection(connection, user, pass);
Just in case, don't forget to compile it in your build.gradle:以防万一,不要忘记在 build.gradle 中编译它:
dependencies {
//other stuff
compile files('libs/mysql-connector-java-3.0.17-ga-bin.jar')
}
PD: This only works if you use the connection from and AsyncTask PD:这仅在您使用来自和 AsyncTask 的连接时才有效
Because Distributed mysql-connector-java-5.1.37-bin.jar is compiled for Java1.8, current Android dex compiler cannot recognize it.由于分布式 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
On the oher hand, mysql-connector-java-5.1.另一方面,mysql-connector-java-5.1。 36 .jar is compiled for Java1.6.
36 .jar 是为 Java1.6 编译的。
$ javap -v com/mysql/jdbc/JDBC4Connection.class |grep "major version"
major version: 50
5.1.37 supports JDBC4.2 , so requires Java1.8. 5.1.37 支持 JDBC4.2 ,所以需要 Java1.8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.