Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java9添加到Android Studio?_Java_Android_Android Studio_Robolectric_Robolectric Gradle Plugin - Fatal编程技术网

如何将Java9添加到Android Studio?

如何将Java9添加到Android Studio?,java,android,android-studio,robolectric,robolectric-gradle-plugin,Java,Android,Android Studio,Robolectric,Robolectric Gradle Plugin,我正在使用Robolectric库,它的最新版本v4.3.1要求运行Java9。我试图将JRE指向编辑配置,但在下拉列表中找不到Java 9,即使我已经安装了它。如果有人能解释一下,那将非常有帮助 请检查是否安装了Java9 您不能使用Java9,Android只支持直到Java8 您应该使用Android Studio附带的JDK版本,不需要单独使用JDK。当前的JDK版本是基于OpenJDK 8的,我不保证它能正常工作,但您可以通过项目结构选项将JDK设置为任何版本 文件>项目结构>SDK

我正在使用Robolectric库,它的最新版本v4.3.1要求运行Java9。我试图将JRE指向编辑配置,但在下拉列表中找不到Java 9,即使我已经安装了它。如果有人能解释一下,那将非常有帮助

请检查是否安装了Java9


您不能使用
Java9
,Android只支持直到
Java8


您应该使用Android Studio附带的JDK版本,不需要单独使用JDK。当前的JDK版本是基于
OpenJDK 8

的,我不保证它能正常工作,但您可以通过项目结构选项将JDK设置为任何版本 文件>项目结构>SDK位置>“在此处更改JDK位置”


很抱歉,它也不起作用。我尝试过选择JDK9,但我得到了这样的提示,到目前为止Android不支持Java 9。根据,Android支持所有Java7功能和Java8的一部分功能

在为Android开发应用程序时,使用Java 8语言功能是非常重要的 可选。您可以保持项目的源和目标兼容性 值设置为Java7,但仍然需要使用JDK8进行编译


在Android Studio中运行Robolectric测试的唯一解决方法是更改测试任务的JRE

选择IDE菜单运行->编辑配置,然后将选项从图片更改为JDK9的位置:

测试可以在以前的版本上运行,作为临时解决办法 目前(2020年4月27日),您将无法针对SDK 29运行Robolectric,但这可能会在将来更新。目前,正如前面的所有答案所指出的,Android Studio不支持Java9或更高版本

但是如果您在这里让您的Robolectic测试运行您可以通过为您的类设置Robolectric
@Config
注释来避免SDK 29。Robolectric只需针对应用程序的所有受支持SDK版本(29除外)运行测试

实施 设置要运行的
maxSdk
minSdk
版本。这可以基于应用程序的最小和最大SDK版本,也可以设置为以下一个版本,以加快测试速度

import androidx.test.ext.junit.runners.AndroidJUnit4
import org.robolectric.annotation.Config
import org.junit.runner.RunWith
import android.os.Build

@RunWith(AndroidJUnit4::class)
@Config(maxSdk = Build.VERSION_CODES.P, minSdk = Build.VERSION_CODES.P) // Value of Build.VERSION_CODES.P is 28
class TestClass {
...
}

当然,这只是另一个“丑陋”的补丁,但它会让你继续,直到你能够对所有想要的SDK运行测试,或者至少是SDK 29及以下所有

android不支持android 9,但你可以使用旧版本的Robolectric看看这个是的,android本身还不支持JDK9,但studio可以,因为它是在IntelliJ IDE上构建的,我在android中使用java 9(Instant.now())时间戳的精度不能达到微秒吗?请检查此线程-此答案不正确。您可能无法在Android应用程序中使用Java 9代码,但Robolectric不会请求Java 9,除非可以使用Java 9 SDK进行编译。尤金的解决方案是正确的。从最新的Robolectric 4.3.1开始,您可能仍然会因为此问题而遇到错误: