我正在使用 Robolectric 库,它的最新版本 v4.3.1 需要 Java 9 才能运行。我试图将 JRE 指向编辑配置,但即使我已经安装了 Java 9,我也没有在下拉列表中找到它。如果有人可以解释一下,那将非常有帮助!
请检查已安装的 Java 9。
我正在使用 Robolectric 库,它的最新版本 v4.3.1 需要 Java 9 才能运行。我试图将 JRE 指向编辑配置,但即使我已经安装了 Java 9,我也没有在下拉列表中找到它。如果有人可以解释一下,那将非常有帮助!
请检查已安装的 Java 9。
目前(2020 年 4 月 27 日)您将无法针对 SDK 29 运行 Robolectric,但将来可能会更新。目前,正如我之前的所有答案所指出的,Android Studio 中不支持 Java 9 或更高版本。
但是,如果您来这里是为了让您的 Robolectric 测试运行,您可以通过为您的班级设置 Robolectric@Config
注释来避免 SDK 29。Robolectric 将简单地针对除 29 之外的所有受支持的应用程序 SDK 版本运行您的测试。
设置要运行的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 不支持 Java 9。根据文档,Android 支持所有 Java 7 功能和部分 Java 8 功能。
在为 Android 开发应用程序时,使用 Java 8 语言功能是可选的。您可以将项目的源和目标兼容性值设置为 Java 7,但仍需要使用 JDK 8 进行编译。
不能用Java 9
,安卓只支持till Java 8
。
你应该使用Android Studio自带的JDK版本,不需要单独的JDK。当前的 JDK 版本基于OpenJDK 8
.