title: Robolectric & Gradle: error: cannot access BufferedImage class file for java.awt.image.BufferedImage not found
body: <p>I made fairly deep research in stack overflow but I haven't found solution so far.</p>
  
  <p>I have come across the error from Android Studio when running Robolectric test.</p>
  
  <p>My project looks this way:</p>
  
  <pre><code>project
   -app
       -src
        -main
        -test
     -build.gradle
   -library
       -src
         -main
         -test
     -build.gradle
  build.gradle
  </code></pre>
  
  <p>Project's build.gradle:</p>
  
  <pre><code>buildscript {
   repositories {
      mavenCentral()
      maven { url '*********************' }
      maven { url '*********************' }
   }
   dependencies {
      classpath 'com.android.tools.build:gradle:0.12.+'
      classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'
   }
  }
  
  allprojects {
   repositories {
      mavenCentral()
      maven { url '*********************' }
      maven { url '*********************' }
   }
  }
  </code></pre>
  
  <p>app's build.gradle:</p>
  
  <pre><code>apply plugin: 'com.android.application'
  apply plugin: 'robolectric'
  
  android {
  compileSdkVersion 18
  buildToolsVersion '20.0.0'
  
  defaultConfig {
      applicationId "my.android.app"
      minSdkVersion 18
      targetSdkVersion 20
      versionCode 1
      versionName "1.0"
  }
  buildTypes {
      release {
          runProguard false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.pro'
      }
  }
  sourceSets {
      androidTest {
          setRoot('src/test')
      }
      main { java.srcDirs = ['src/main/java']
             manifest.srcFile('src/main/AndroidManifest.xml')
             resources.srcDirs = ['src']
             aidl.srcDirs = ['src']
             renderscript.srcDirs = ['src']
             res.srcDirs = ['src/main/res']
             assets.srcDirs = ['src/main/assets']
      }
  }
  
  packagingOptions {
      ...
  }
  
  signingConfigs {
      release {
          ...
      }
  }
  buildTypes {
      release {
          signingConfig signingConfigs.release
      }
  }
  }
  
  dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   androidTestCompile ...
   testCompile ...
   compile 'com.android.support:support-v4:20.+'
   compile 'com.google.guava:guava:17.0'
   compile project(':library')
  }
  
  task addTest {
  def src = ['src/test/java']
  def file = file("android-app.iml")
  
  doLast {
      try {
          def parsedXml = (new XmlParser()).parse(file)
          def node = parsedXml.component[1].content[0]
          src.each {
              def path = 'file://$MODULE_DIR$/' + "${it}"
              def set = node.find { it.@url == path }
              if (set == null) {
                  new Node(node, 'sourceFolder', ['url': 'file://$MODULE_DIR$/' + "${it}",         'isTestSource': "true"])
                  def writer = new StringWriter()
                  new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)
                  file.text = writer.toString()
              }
          }
      } catch (FileNotFoundException e) {
          // nop, iml not found
      }
  }
  }
  
  gradle.projectsEvaluated {
    preBuild.dependsOn(addTest)
  }
  
  tasks.withType(Test) {
    scanForTestClasses = false
    include "**/*Test.class"
  }
  </code></pre>
  
  <p>library's build.gradle:</p>
  
  <pre><code>apply plugin: 'com.android.application'
  apply plugin: 'robolectric'
  
  android {
  compileSdkVersion 18
  buildToolsVersion '20.0.0'
  
  defaultConfig {
      applicationId "my.android.app"
      minSdkVersion 18
      targetSdkVersion 20
      versionCode 1
      versionName "1.0"
  }
  buildTypes {
      release {
          runProguard false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.pro'
      }
  }
  sourceSets {
      androidTest {
          setRoot('src/test')
      }
      main { java.srcDirs = ['src/main/java']
             manifest.srcFile('src/main/AndroidManifest.xml')
             resources.srcDirs = ['src']
             aidl.srcDirs = ['src']
             renderscript.srcDirs = ['src']
             res.srcDirs = ['src/main/res']
             assets.srcDirs = ['src/main/assets']
      }
  }
  
  packagingOptions {
      ...
  }
  
  signingConfigs {
      release {
          ...
      }
  }
  buildTypes {
      release {
          signingConfig signingConfigs.release
      }
  }
  }
  
  dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   androidTestCompile ...
   testCompile ...
   compile 'com.android.support:support-v4:20.+'
   compile 'com.google.guava:guava:17.0'     
  }
  
  task addTest {
  def src = ['src/test/java']
  def file = file("android-app.iml")
  
  doLast {
      try {
          def parsedXml = (new XmlParser()).parse(file)
          def node = parsedXml.component[1].content[0]
          src.each {
              def path = 'file://$MODULE_DIR$/' + "${it}"
              def set = node.find { it.@url == path }
              if (set == null) {
                  new Node(node, 'sourceFolder', ['url': 'file://$MODULE_DIR$/' + "${it}",         'isTestSource': "true"])
                  def writer = new StringWriter()
                  new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)
                  file.text = writer.toString()
              }
          }
      } catch (FileNotFoundException e) {
          // nop, iml not found
      }
  }
  }
  
  gradle.projectsEvaluated {
    preBuild.dependsOn(addTest)
  }
  
  tasks.withType(Test) {
    scanForTestClasses = false
    include "**/*Test.class"
  }
  </code></pre>
  
  <p>The error that I am given:</p>
  
  <pre><code> Error:(14, 9) Gradle: error: cannot access BufferedImage class file for java.awt.image.BufferedImage not found
  </code></pre>
  
  <p>Typing :</p>
  
  <pre><code>./gradlew clean test --stacktrace
  </code></pre>
  
  <p>Gives me exception:</p>
  
  <pre><code>org.gradle.api.tasks.TaskExecutionException: Execution failed for task    ':app:compileTestDebugJava'.
  at     org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
  at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
  at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
  at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
  at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
  at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
  at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
  at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
  at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289)
  at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
  at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
  at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
  at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
  at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
  at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
  at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
  at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
  at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
  at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
  at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)
  at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
  at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
  at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)
  at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
  at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)
  at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
  at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
  at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201)
  at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)
  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)
  at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)
  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
  at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
  at org.gradle.launcher.Main.doAction(Main.java:46)
  at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
  at org.gradle.launcher.Main.main(Main.java:37)
  at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
  at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
  at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
  at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
  at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
  at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:55)
  
  Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
  at org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:47)
  at org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:38)
  at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:96)
  at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:49)
  at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:35)
  at org.gradle.api.internal.tasks.compile.DelegatingJavaCompiler.execute(DelegatingJavaCompiler.java:29)
  at org.gradle.api.internal.tasks.compile.DelegatingJavaCompiler.execute(DelegatingJavaCompiler.java:20)
  at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:33)
  at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:24)
  at org.gradle.api.tasks.compile.Compile.performCompilation(Compile.java:165)
  at org.gradle.api.tasks.compile.Compile.compile(Compile.java:153)
  at org.gradle.api.tasks.compile.Compile.compile(Compile.java:87)
  at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
  at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:236)
  at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
  at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:223)
  at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
  at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
  at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
  ... 46 more
  </code></pre>
  
  <p>My question of course is: how to resolve it and run Robolectric tests successfully? Anyone, please.</p>
  
  <p>EDIT:
  Could anyone recommend working android gradle plugin with instructions concerning proper gradle configuration?</p>