简体   繁体   English

android JDBC mysql java 连接器应用程序:preDexDebug

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM