Android Studio2.1.1-Ошибка преобразования байт-кода в dex

когда я пытаюсь запустить свое приложение в android. Я получаю следующую ошибку

Error:Error converting bytecode to dex:
    Cause: Dex cannot parse version 52 byte code.
    This is caused by library dependencies that have been compiled using Java 8 or above.
    If you are using the 'java' gradle plugin in a library submodule add 
    targetCompatibility = '1.7'
    sourceCompatibility = '1.7'
    to that submodule's build.gradle file.

в build.gradle у меня есть следующие

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "jejapps.conexionremota"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
    targetCompatibility = 1.7
    sourceCompatibility = 1.7
}

JAVA_HOME, и у меня есть адрес папки java (C: \ Program Files (x86) \ Java \ jdk1.7.0_55)

большое спасибо всем


person Jonatan Jourdan    schedule 10.06.2016    source источник
comment
.. вызвано зависимостями библиотек .. - проверьте ваши каталоги libs и junit / that jbundle. Один из них скомпилирован для Java 8, это не ваше приложение или файл gradle (основного модуля), который вызывает это.   -  person zapl    schedule 10.06.2016
comment
oi65.tinypic.com/s2ur1x.jpg есть?   -  person Jonatan Jourdan    schedule 10.06.2016
comment
где я должен проверить, скомпилирован ли он для Java 8? @zapl   -  person Jonatan Jourdan    schedule 10.06.2016
comment
Это либо указано где-то, либо, к сожалению, довольно сложно: stackoverflow.com/questions/3313532/   -  person zapl    schedule 10.06.2016
comment
jbundle Build-Jdk: 1.6.0_29 junit Build-Jdk: 1.6.0_45 какая версия java будет? @zapl   -  person Jonatan Jourdan    schedule 10.06.2016
comment
Это java 1.6, которая обычно называется java 6. Сейчас мы находимся на java 1.8, если вы используете этот номер версии (или 1.8.0_92, если вы указываете номер обновления). Так что эти двое в порядке. Может быть, в выводе сборки есть подсказка о том, что она сейчас обрабатывает? Вы также можете попробовать очистить сборку (gradle clean, если вы строите на консоли, или заголовок stackoverflow.com/questions/16636848/ - я предполагаю, что это также может быть что-то, что осталось от старой сборки, если вы в какой-то момент создали свой код с помощью java 8. clean следует избавиться от него.   -  person zapl    schedule 10.06.2016


Ответы (1)


Я решаю эту проблему, добавляя следующие операторы в скрипт Gradle проекта (build.gradle):

tasks.withType(JavaCompile) {
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
}

Итак, наконец, мой проект build.gradle выглядит так:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
    tasks.withType(JavaCompile) {
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }

}
person 路边乞丐    schedule 14.07.2016