简体   繁体   中英

Error: strings in switch are not supported in -source 1.6 on Android Studio 1.2 RC 3

I spent a few hours last night trying to get my project to actually compile using JDK 1.7 on Android Studio 1.2 RC 3 .

I read through several different post on this site and others from people that were having similar issues and I tried the solutions they offered like setting my project's bytecode version to 1.7, also I set my project's source compatibility & target compatibility to 1.7.

But I still keep getting the following error:

Information:Gradle tasks [:android:assembleDebug]
:android:preBuild UP-TO-DATE
:android:preDebugBuild UP-TO-DATE
:android:checkDebugManifest
:android:preReleaseBuild UP-TO-DATE
:core:compileJava
Warning:[options] bootstrap class path not set in conjunction with -source 1.6
 F:\MyProjects\Puzzle Pebbles\core\src\com\mtpmstudios\puzzlepebbles\Pebble.java
 Error:(27, 16) error: strings in switch are not supported in -source 1.6
 (use -source 7 or higher to enable strings in switch)
 Error:(54, 16) error: strings in switch are not supported in -source 1.6
(use -source 7 or higher to enable strings in switch)
1 warning
Error:Execution failed for task ':core:compileJava'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 6.506 secs
Information:3 errors
Information:1 warning
Information:See complete output in console

I would really appreciate any insight on this issue I've been having. Thank you.

UPDATE

Here's my build.gradle file:

    android {
    buildToolsVersion '21.1.2'
    compileSdkVersion 21

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
// needed to add JNI shared libraries to APK when compiling on CLI
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniFolders = new HashSet<File>()
    pkgTask.jniFolders.add(new File(projectDir, 'libs'))
}
// called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders
// so they get packed with the APK.
task copyAndroidNatives() {
    file("libs/armeabi/").mkdirs();
    file("libs/armeabi-v7a/").mkdirs();
    file("libs/x86/").mkdirs();

    configurations.natives.files.each { jar ->
        def outputDir = null
        if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
        if (jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
        if (jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
        if (outputDir != null) {
            copy {
                from zipTree(jar)
                into outputDir
                include "*.so"
            }
        }
    }
}
task run(type: Exec) {
    def path
    def localProperties = project.file("../local.properties")
    if (localProperties.exists()) {
        Properties properties = new Properties()
        localProperties.withInputStream { instr ->
            properties.load(instr)
        }
        def sdkDir = properties.getProperty('sdk.dir')
        if (sdkDir) {
            path = sdkDir
        } else {
            path = "$System.env.ANDROID_HOME"
        }
    } else {
        path = "$System.env.ANDROID_HOME"
    }

    def adb = path + "/platform-tools/adb"
    commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.mtpmstudios.puzzlepebbles.android/com.mtpmstudios.puzzlepebbles.android.AndroidLauncher'
}
// sets up the Android Eclipse project, using the old Ant based build.
eclipse {
    // need to specify Java source sets explicitely, SpringSource Gradle Eclipse plugin
    // ignores any nodes added in classpath.file.withXml
    sourceSets {
        main {
            java.srcDirs "src", 'gen'
        }
    }

    jdt {
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }

    classpath {
        plusConfigurations += [project.configurations.compile]
        containers 'com.android.ide.eclipse.adt.ANDROID_FRAMEWORK', 'com.android.ide.eclipse.adt.LIBRARIES'
    }

    project {
        name = appName + "-android"
        natures 'com.android.ide.eclipse.adt.AndroidNature'
        buildCommands.clear();
        buildCommand "com.android.ide.eclipse.adt.ResourceManagerBuilder"
        buildCommand "com.android.ide.eclipse.adt.PreCompilerBuilder"
        buildCommand "org.eclipse.jdt.core.javabuilder"
        buildCommand "com.android.ide.eclipse.adt.ApkBuilder"
    }
}
// sets up the Android Idea project, using the old Ant based build.
idea {
    module {
        sourceDirs += file("src");
        scopes = [COMPILE: [plus: [project.configurations.compile]]]

        iml {
            withXml {
                def node = it.asNode()
                def builder = NodeBuilder.newInstance();
                builder.current = node;
                builder.component(name: "FacetManager") {
                    facet(type: "android", name: "Android") {
                        configuration {
                            option(name: "UPDATE_PROPERTY_FILES", value: "true")
                        }
                    }
                }
            }
        }
    }
}
dependencies {
}

repositories {
    mavenCentral()
    mavenLocal()
}

I assume you must have created the project on your IDE with complaince to JDK1.6 initially. The issue i find here is in your build script. If you have multiple JDK's installed and if u dynamically try to change the Java version of your project, the compiler will give priority to that version of Java on which your current project was created.

I faced the same issue while accessing JavaFX 8 components with both JDK7 and JDK8 installed. (My previous project was created with 1.7 as target platform)

You might fix this by creating a new project in the IDE with target JDK version to 1.7 or higher and then copying all your source files from previous project to the newly created project path. The build script created in this case by your IDE will be pointing to JDK 7 now.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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