赞
踩
省流:使用jdk1.8执行17编译的包,启动报错。
项目运行中难免出现服务器环节集成其它jar包的情况,而其它jar包的jdk版本可能和我们业务项目的jdk版本不一致,如果比我们业务版本低,那么可能不会出现问题, 因为jdk向下兼容,如果jdk版本比我们业务版本高,可能就会出现编译无法运行的情况。
我的业务项目A是一个springboot项目,部署在服务器上,服务器的运行环境为jdk1.8,现在我需要在这个服务器上部署另外一个项目B,但是项目B使用的编译环境为17(但是项目B需要没有8版本以上的代码写法,如果你的项目B有8以上的写法,可能无法使用17编译成8的版本启动!)
然后我在1.8的jdk运行环境下执行17编译的包,启动提示报错信息:
Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file
Exception in thread "main"
java.lang.UnsupportedClassVersionError:
com/nuctech/init/WebApplication has been compiled by
amore recent version of the Java Runtime
(class file version 61.0) this version of the Java Runtime
only recognizes class file versions up to 52
报错大意为:无法使用1.8的环境(52对应jdk1.8)运行17(61对应的jdk17)的程序。
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- </properties>
- tasks.withType(JavaCompile) {
- sourceCompatibility = '8'
- targetCompatibility = '8'
- }
安装jdk17,修改环境变量为17的环境变量,这样既可以向下兼容项目A 又可以支持项目B,但是可能因为jdk环境不一样带来其它问题, 这个大家只能自己根据项目实际情况去测试
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。