requires JDK 1.8 or higher ??

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GXH_APOLOGIZE/article/details/85071496

我本来想引入Guava(Google Core Libraries for Java)的,目标是使用其中的一个工具类方法。以下方式添加依赖:

implementation 'com.google.guava:guava:27.0.1-jre'

但是偏偏天不遂人意,出现了errors:

Default interface methods are only supported starting with Android N (--min-api 24): boolean com.google.common.base.Predicate.test(java.lang.Object)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): boolean com.google.common.base.Predicate.test(java.lang.Object), sources=[Unknown source file], tool name=Optional.of(D8)}

大概是说, java8才支持静态接口方法,Android N 要求jdk版本为1.8。
解决方法呢就是编译时使用jdk1.8。

当然我也重新去 看了下Guava文档,确实有1.8的要求:

Guava comes in two flavors.

The JRE flavor requires JDK 1.8 or higher.
If you need support for JDK 1.7 or Android, use the Android flavor. You can find the Android Guava source in the android directory.

于是我进行了如下修改:
Project Structure–>SDK Location -->JDK location
原来是勾选的Use embedded JDK,现在取消,下面选择自己的jdk(1.8)的安装路径。
但是偏偏天不遂人意,又出现了errors:

Gradle sync failed: Uninitialized object exists on backward branch 70
		Exception Details:
		Location:
		com/android/build/gradle/tasks/BuildArtifactReportTask.newArtifact(Lcom/android/build/api/artifact/BuildableArtifact;)Lcom/android/build/gradle/tasks/BuildArtifactReportTask$BuildableArtifactData; @119: goto
		Reason:
		Error exists in the bytecode
		Bytecode:
		0x0000000: bb00 f459 2bb9 0139 0100 c000 6b2b b901
		0x0000010: 3d01 0001 b901 4302 0059 1301 45b8 0148
		0x0000020: c000 374d 3a0d 3a0c 3a0b 2c4e bb00 6859
		0x0000030: 2c10 0ab8 003d b700 69c0 006b 3a04 2db9
		0x0000040: 0054 0100 3a05 1905 b900 5a01 0099 002d
		0x0000050: 1905 b900 5e01 003a 0619 0419 06c0 014a
		0x0000060: 3a07 3a0e 1907 b901 4d01 003a 0f19 0e19
		0x0000070: 0fb9 0075 0200 57a7 ffcf 1904 c000 773a
		0x0000080: 0e19 0b19 0c19 0d19 0eb7 0150 b0       
		Stackmap Table:
		full_frame(@70,{Object[#2],Object[#109],Object[#55],Object[#55],Object[#107],Object[#86],Top,Top,Top,Top,Top,Uninit... (show balloon)

这个error大概是因为Android Studio和Gradle使用了不同的JDk版本。所以出现了这个,可以使用AS自带的jdk,勾选Use embedded JDK。

最终在build.gradle添加,当然还是使用的AS自带的jdk,得以解决requires JDK 1.8 or higher的问题:

  compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }

ps: 但是偏偏天不遂人意,我发现我想使用的工具类方法并不是我真正想要的,,?? 一定了加班加的眼花了…
没有描述

猜你喜欢

转载自blog.csdn.net/GXH_APOLOGIZE/article/details/85071496