执行失败的任务:在Android Studio中的应用程序:compileDebugJavaWithJavac

我正在Android Studio中开发一个Android应用程序。 不太清楚哪里出了问题。 前几天我成功build设了。 任何帮助将是伟大的。

这是错误:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. * What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. 

这是我的build.gradle

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "21.1.2" defaultConfig { multiDexEnabled true applicationId "com.tubbs.citychurchob" minSdkVersion 14 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']) compile fileTree(dir: 'libs', include: 'Parse-*.jar') compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:cardview-v7:23.1.0' compile 'com.parse.bolts:bolts-android:1+' compile 'com.android.support:recyclerview-v7:23.1.0' } 

尝试将buildToolsVersion升级到“23.0.1”,如下所示:

 compileSdkVersion 23 buildToolsVersion "23.0.1" 

如果你没有安装这个版本的buildTools,请用SDKManager下载它作为提示。

这是因为你的$ JAVA_HOME没有设置。 如果您使用的是Mac,

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home"

在项目设置中设置JDK位置 在这里输入图像说明

更新(06/05/2017)

我想要使​​用Realm for Android,并且需要Retrolambda 。 问题是杰克与Retrolambda冲突。

所以我从下面的原始答案中显示的我的gradle中删除了我的Jack选项configuration,并进行了以下更改:

 // --------------------------------------------- // Project build.gradle file // --------------------------------------------- buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'me.tatarka:gradle-retrolambda:3.6.1' classpath "io.realm:realm-gradle-plugin:3.1.4" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } 

 // --------------------------------------------- // Module build.gradle file // --------------------------------------------- apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'realm-android' android { compileSdkVersion 25 buildToolsVersion "25.0.2" ... 

的tools.jar

如果您在上面进行了这些更改,但仍然出现以下错误:

 Execution failed for task ':app:compileDebugJavaWithJavac'. com.sun.tools.javac.util.Context.put(Ljava/lang/Class;Ljava/lang/Object;)V 

尝试删除以下文件:

 /Library/Java/Extensions/tools.jar 

然后:

  1. 退出模拟器
  2. 退出Android Studio
  3. 重新打开Android Studio
  4. build立>清洁项目
  5. 再次运行/debugging你的应用到你的设备/仿真器上

所有的变化都为我解决了。

注意:

我不确定什么是tools.jar,或者是否重要。 像这个Stackoverflow问题中的其他用法一样:

无法在OSX优胜美地上创buildJava项目

我们很不幸地不得不使用AUSKey(澳大利亚政府在我们login澳大利亚商业门户网站之前使用的一些古老的恐龙Javaauthentication密钥系统来authentication我们的计算机)。

我的猜测是tools.jar可能是AUSKey的JAR文件。

如果您担心,而不是删除此文件,您可以备份整个文件夹并将其保存在某个地方,以防万一您不能再次login到澳大利亚商业门户网站。

希望有所帮助:D

原始答复

我今天碰到这个问题(27/06/2016)。

我下载了Android Studio 2.2并更新了JDK 1.8。

除了上面的指向正确的JDKpath的答案之外,我不得不另外在我的build.gradle(Module: app)文件中指定JDK版本:

 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 

生成的文件如下所示:

 apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.mycompany.appname" minSdkVersion 17 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" jackOptions { enabled true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' } 

请注意,如果遇到有关Java 8 language features requires Jack enabled的错误Java 8 language features requires Jack enabled ,则需要将以下内容添加到您的Gradle文件中(如上所示):

 jackOptions { enabled true } 

这样做后,我终于得到了我的新项目应用程序运行在我的手机上。

第一步:

第一个stape

第二步:

第二步

我尝试了两个答案,但没有工作。 我这里的事情是解决scheme。

从你的项目 –

去Gradle脚本>> build.gradle(模块:应用程序)然后删除下面的代码(如果存在)

………………………………………

 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_6 } 

………………………………………

删除它,然后清理项目,然后运行。 没有java家需要设置,不需要更改版本

在将Android Studio升级到2.2.2版本后,我遇到了这个问题,我推荐使用embedded式JDK解决它: 在这里输入图像说明

在Android Studio中打开:文件>项目结构>查看JDK位置是否指向您的JDK 1.8目录。

注意:你可以使用compileSdkVersion 24.它工作的时候相信我。为此首先从oracle下载最新的jdk。

解决了这个问题。

我正在试图编译这个项目“Waveform Android” – https://github.com/Semantive/waveform-android

并得到了我这个错误。

我在Ubuntu 14.04LTS上使用Android工作室。

我有JAVA 8安装。

在我的gradle构build脚本文件中,有一些语句如下。

 retrolambda { jdk System.getenv("JAVA8_HOME") oldJdk System.getenv("JAVA7_HOME") javaVersion JavaVersion.VERSION_1_7 } 

我把“JAVA8_HOME”改为“JAVA_HOME”,因为在我的环境variables中,java home目录被设置为JAVA_HOME而不是JAVA8_HOME,然后它成功地build立了。

在更改构build脚本之后。

 retrolambda { jdk System.getenv("JAVA_HOME") oldJdk System.getenv("JAVA7_HOME") javaVersion JavaVersion.VERSION_1_7 } 

或者你也可以创build一个名为JAVA8_HOME的新的环境variables指向正确的JDK位置,但是我还没有尝试过,因为我不想每个JDK版本都需要环境variables。

请检查您的应用程序的build.gradle。 我有同样的问题,最后我发现问题是在我的build.gradle文件依赖{},它添加额外的.jar文件,其实际上不存在于我的项目作为依赖。 所以我删除这个依赖关系,问题已经消失。

问题在于命名文件夹,如果您的文件夹保存您的项目包含特殊字符,然后删除它们。 如果错误仍然存​​在,请尝试保存没有空间的文件夹。

我在Mac OS Sierra上遇到了这个问题,我第一次运行React Native Android App

Execution failed for task ':app:compileDebugJavaWithJavac'.

> Could not find tools.jar

我将Java开发工具包(JDK)的JAVA HOME环境variables从:

export JAVA_HOME='/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home'

至 :

export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'

在Android Studio中创build项目并在项目设置中查找JDK位置后,我find了正确的版本。

只是补充@yuchaozh 上面的答案 ,帮助我解决它。 (我没有代表发表评论)

运行这个来知道你有哪个java版本

 ls /Library/Java/JavaVirtualMachines/ 

你会得到像这样的输出:

 jdk1.8.0_111.jdk 

用您的Java版本replace并运行此命令以导出正确的path。

 export JAVA_HOME="/Library/Java/JavaVirtualMachines/<YOUR_JAVA_VERSION>/Contents/Home" 

在构build文件中更改编译文件('AF-Android-SDK.jar')编译文件('libs / AF-Android-SDK.jar') ,它将工作

我有同样的问题。 我正在和一个使用Mac的开发团队合作,团队中的其他人都在运行Windows。 但是我们在jdk 1.8上使用了Anroid Studio 2.2-beta。 如果你在Mac上遇到这个问题,这里是如何解决它。 不要使用Android Studio 2.2-beta。 我花了几个小时试图在2.2-beta中debugging这个错误。 我通过简单地更改为Android Studio 2.1.3来解决这个问题 。 我们的应用程序在更改Android Studio版本后立即运行。 在下载之前,请在Android Studio的网站上警告mac用户在2.2 beta版上运行jdk 1.8。 猜猜我应该读精美的打印哈哈

我遇到了同样的错误。 指向正确版本的JDK的JAVA_HOME。 所有支持库和构build工具已更新。 仍然面临同样的问题。

我在我的项目中使用Android注释。 我添加了一个新的View.and已经有一个在Java文件中具有相同名称的现有视图。 当我运行该项目,而不是指出已经存在的视图,我收到上述错误。

检查您的Java文件错误,如果其他解决scheme不起作用。

如果您使用的是Android + Lambdas,则可能会发生这种情况。 有时我可以毫无问题地使用Lambdas,但在其他情况下,项目不会编译并在编译器中给出exception(当我尝试将Lambda或方法引用传递给ScheduledExecutorService.scheduleAtFixedRate时)。

在这个链接中有一个讨论( https://bugs.openjdk.java.net/browse/JDK-8169759 ),他们解释了为什么发生这种情况。 同时,我只是在编译器允许的情况下在我的Android项目中使用lambdas。

您的gradle文件可能已损坏。 尝试运行

./gradlew --refresh-dependencies

在android studio里面的terminal。

这对我有用

 compileSdkVersion 25 buildToolsVersion '25.0.0' 

我面临类似的问题,但我不得不手动设置程序文件的jdk文件夹,所以我特别推荐给大家的是升级到Java 8的,直接指向android studio的项目设置,要么使用embedded选项或select文件夹

更改build.gradle文件中的任何东西将重新同步一切,错误将会消失。对我来说,我改变了minSdkVersion,它的工作。 不要担心,如果系统崩溃或Android Studio没有正确closures,可能会发生这种情况。

当我尝试在我的unit testing中使用retrolambda时,我有这个错误。 我没有find一个解决scheme如何使unit testingretrolambda工作。 所以,我使用老式的匿名类而不是unit testing的lambdaexpression式,它对我很有用。