android JDBC mysql java连接器app:preDexDebug

我试图学习如何使用JDBC将应用程序连接到mysql数据库。
我正在使用Android Studio。
我从de mysql网站下载了“mysql-connector-java-5.1.37”。
只是为了将“mysql-connector-java-5.1.37-bin.jar”放在Hello World应用程序的libs文件夹中并编译我recive:

错误:任务’:app:preDexDebug’的执行失败。 com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程’命令’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' } 

拜托,帮帮我:) thnx

尝试同步项目Tools -> Android -> Sync Project with Gradle Files

然后重建您的项目: build -> rebuild project

我有同样的问题,问题出在mysql-connector-java-5.1.37.jar文件中。 我从这里下载了一个旧版本(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的连接时才有效

因为分布式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支持JDBC4.2 ,因此需要Java1.8。