requires JDK 1.8 or higher ??

我本来想引入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: 但是偏偏天不遂人意,我发现我想使用的工具类方法并不是我真正想要的,,?? 一定了加班加的眼花了…
没有描述

当您在开发动态Web项目时,如果遇到错误信息 "Dynamic Web Module 5.0 requires Java 1.8 or newer",这意味着您的项目配置要求使用Java 1.8或更高版本的Java运行环境。解决这个问题的步骤如下: 1. **检查Java版本**: - 打开命令行工具(在Windows上是CMD或PowerShell,在Mac或Linux上是Terminal)。 - 输入命令 `java -version` 并回车。这将显示当前安装的Java版本信息。 - 如果显示的版本低于1.8,则需要升级Java版本。 2. **升级Java版本**: - 访问Oracle官网或其他Java分发网站下载Java 1.8或更高版本的安装包。 - 运行安装程序并遵循指示完成安装。 - 安装完成后,重新打开命令行工具并再次检查Java版本,确保升级成功。 3. **修改项目配置**: - 打开您的项目,在项目属性中找到与Java版本相关的配置选项。 - 将项目的Java版本设置为1.8或更高。 - 如果您的项目使用的是Maven或Gradle构建工具,那么您可能需要修改项目的构建配置文件(pom.xml或build.gradle),确保其中的`source`和`target`标签设置为1.8或更高。 - 例如,在Maven的pom.xml中,您应该有如下配置: ```xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> ``` - 保存更改并重新编译项目。 4. **清理和重建项目**: - 在IDE中进行清理操作,以确保所有旧的字节码被清除。 - 重新构建您的项目以应用新的Java版本设置。 5. **检查服务器配置**: - 如果您的Web项目部署在特定的Web服务器上(例如Tomcat, Jetty等),请确保服务器配置也是以Java 1.8或更高版本运行。 完成以上步骤后,您的项目应该能够满足Dynamic Web Module 5.0对于Java版本的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值