【问题标题】:android JDBC mysql java connector app:preDexDebugandroid JDBC mysql java 连接器应用程序: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的运行按钮。我怎么做? (对不起,我是新手)
  • 真实项目请不要这样做:stackoverflow.com/questions/15853367/…
  • @MorrisonChang thx 的帮助,但我在使用网络服务时也遇到了问题 haha​​hhaa..
  • 我也有同样的问题。有人找到解决方案了吗?

标签: java android mysql jdbc


【解决方案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。

    【讨论】:

      猜你喜欢
      • 2014-03-31
      • 2014-05-17
      • 2017-10-08
      • 2013-03-10
      • 2016-06-02
      • 1970-01-01
      • 2012-04-15
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多