无法findJava运行时Android Studio Robolectric

我已经将Robolectric添加到Android项目中。 我在19.0.1中使用了带有构build工具的Android Studio。

我可以运行testing:

$./gradlew test 

哪个执行得很好。

如果我尝试:

 $ gradle installDebug 

它也执行得很好:

 $ ./gradlew installDebug WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debugTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for debugTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead. :app:compileDebugNdk :app:preBuild :app:preDebugBuild :app:checkDebugManifest :app:prepareDebugDependencies :app:compileDebugAidl :app:compileDebugRenderscript :app:generateDebugBuildConfig :app:mergeDebugAssets :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources :app:mergeDebugResources :app:processDebugManifest :app:processDebugResources :app:generateDebugSources :app:compileDebugJava :app:preDexDebug :app:dexDebug :app:processDebugJavaRes UP-TO-DATE :app:validateDebugSigning :app:packageDebug :app:installDebug 8266 KB/s (46166 bytes in 0.005s) pkg: /data/local/tmp/app-debug-unaligned.apk Success BUILD SUCCESSFUL Total time: 4.291 secs 

但是,当我试图在Android Studio的设备或模拟器上运行我的项目时,我得到以下内容:

 Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: /Applications/Android Studio.app/sdk/build-tools/19.0.1/dx --dex --output /Users/fstephany/Code/android/RoboElectricTestingProject/app/build/dex/debug /Users/fstephany/Code/android/RoboElectricTestingProject/app/build/classes/debug /Users/fstephany/Code/android/RoboElectricTestingProject/app/build/dependency-cache/debug Error Code: 1 Output: Unable to locate a Java Runtime to invoke. 

任何暗示在哪里寻找这个问题? 我总是可以installDebug然后从CLI或Studio启动应用程序,但是它会阻碍你。

Solutions Collecting From Web of "无法findJava运行时Android Studio Robolectric"

过期的gradle守护进程可能会在后台导致一些性能问题。 我认为在闲置3个小时之后,gradle会把它清理干净,但似乎并非如此。 去你的terminal,去你的项目的根文件夹的Gradle文件,并input命令

 ./gradlew --stop 

并尝试再次运行你的构build。 希望能解决你的问题,就像我的问题一样。

我试图理解为什么这导致了一个问题,但我还没有find一个足够好的理由呢。 如果我find任何东西,我会编辑答案。

UPDATE

从Gradle Design Github页面 :

目前,守护进程在发生内存压力时存在严重的问题。 在压力下,守护进程显示GC哗然。

对此的一个假设是使用弱引用caching,特别是在元类实例保存在弱引用caching中的Groovy元类系统中。 请注意,这不一定是守护进程的问题,因为它也适用于非守护进程的情况。 但是,由于守护进程泄漏的内存而加剧了这种情况,从而增加了发生内存压力的可能性。

这并没有给出任何明确的答案,但它确实给予了这个守护进程可能是你所看到的(和其他事情)的罪魁祸首。 我已经看到一些平等的任务只要平时做10倍,并且运行 – 停止缓解这些问题。

对我来说,在pathvariables(Android Studio – > Preferences – > Path Variables)中添加JAVA_HOME ,然后重新启动Gradle守护进程( ./gradlew --stop )就行了。

在Mac上,可以使用/usr/libexec/java_home -v 1.6findJava目录(版本6)

切换回Gradle 1.10为我工作(在OS-X上)。 您可以编辑gradle-wrapper属性或在Android-Studio中configuration本地gradle分发

尝试在build.gradle文件中设置sourceCompatibility和targetCompatibility。 对于Java 1.7,它应该看起来像:

 android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } }