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。